gpt4 book ai didi

SQL & Website - 如何优化网站

转载 作者:行者123 更新时间:2023-11-29 12:19:23 27 4
gpt4 key购买 nike

我想添加一些统计数据——用户向其他用户发送了多少消息。现在,用户将转到他的面板并看到该号码。我应该执行吗

SELECT count(*) from MESSAGES where id=user.id

每个用户面板页面都刷新了吗?它不会杀死我的数据库吗?例如 1k 用户刷新帐户页面,还有几个恶作剧者会乱按 F5?

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

你怎么看?

最佳答案

除了我的评论..

-- 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"();

关于SQL & Website - 如何优化网站,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34873226/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com