首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >SQL &网站-如何优化网站

SQL &网站-如何优化网站
EN

Stack Overflow用户
提问于 2016-01-19 09:38:49
回答 1查看 38关注 0票数 2

我想添加一些统计--用户发送给其他用户的消息有多少。现在,用户将前往他的面板,并看到这个号码。我该执行吗

代码语言:javascript
运行
复制
SELECT count(*) from MESSAGES where id=user.id

每个用户面板页面都刷新了吗?它不会杀了我的DB吗?对于exmaple 1k用户来说,刷新帐户页面,另外还有几个恶作剧者,谁会乱发消息来抢先F5?

我在检索用户玩的游戏、上次登录日期等方面也有类似的问题。我想知道每次执行sql是个好主意,还是应该在local.storage中缓存这个值,并在每次更新DB值时增加这些值?如果用户注销,则清除本地存储。但是在这样的解决方案中,local.storage会变得非常大。例如,如果我们必须处理博客上的新闻或文章,如何解决问题?

你认为如何?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-01-19 12:44:50

除了我的评论。

代码语言:javascript
运行
复制
-- create field
ALTER TABLE users ADD COLUMN messages_total integer;
ALTER TABLE users ALTER COLUMN messages_total SET DEFAULT 0;
COMMENT ON COLUMN users.messages_total IS 'Users messages total.';

-- create trigger function
CREATE OR REPLACE FUNCTION "users_messages::update_statistics"()
  RETURNS trigger AS
$BODY$BEGIN
    IF TG_OP = 'DELETE' THEN
        UPDATE users SET messages_total = messages_total - 1 WHERE id = OLD.user_id;
    ELSIF TG_OP = 'INSERT' THEN
        UPDATE users SET messages_total = messages_total + 1 WHERE id = NEW.user_id;
    END IF;

    RETURN NULL;
END;$BODY$
  LANGUAGE plpgsql VOLATILE
  COST 5;

CREATE TRIGGER update_statistics
  AFTER INSERT OR DELETE
  ON users_messages
  FOR EACH ROW
  EXECUTE PROCEDURE "users_messages::update_statistics"();
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34873226

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档