我有一个网页,每30秒自动更新一次用户及其评论。
网站上一次最多可有300-400名用户。
所以每30秒,一个PHP脚本通过AJA调用,运行它:
SELECT `user` .*, by_user.name as updated_by
"FROM `user`
"LEFT JOIN `user` by_user ON ( `user`.last_updated_by = by_user.user_id )
WHERE `user`.active= 1 AND `user`.group_id =.$group_id.
AND `user`.last_updated > (NOW() - INTERVAL 30 SECOND)
最好不使用该日期计算(NOW和INTERVAL),而是记录上次投票的日期时间,然后检查它?
答案 0 :(得分:4)
NOW() - INTERVAL 30 SECOND
只对查询执行一次,而且速度非常快。做其他事情的开销几乎肯定会对性能造成更糟的影响。
如果你有复合索引(active,group_id,last_updated),它将使性能达到最佳。
由于你在select中执行u。*,我不会尝试为查询创建覆盖索引。
答案 1 :(得分:0)
这两种方法都应该给出相同的结果 - 计算速度非常快,并且只在执行查询时发生一次。您的查询速度将更多地取决于您已编制索引的字段等。