我想添加一些统计--用户发送给其他用户的消息有多少。现在,用户将前往他的面板,并看到这个号码。我该执行吗
SELECT count(*) from MESSAGES where id=user.id
每个用户面板页面都刷新了吗?它不会杀了我的DB吗?对于exmaple 1k用户来说,刷新帐户页面,另外还有几个恶作剧者,谁会乱发消息来抢先F5?
我在检索用户玩的游戏、上次登录日期等方面也有类似的问题。我想知道每次执行sql是个好主意,还是应该在local.storage中缓存这个值,并在每次更新DB值时增加这些值?如果用户注销,则清除本地存储。但是在这样的解决方案中,local.storage会变得非常大。例如,如果我们必须处理博客上的新闻或文章,如何解决问题?
你认为如何?
发布于 2016-01-19 12:44:50
除了我的评论。
-- 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"();
https://stackoverflow.com/questions/34873226
复制相似问题