每40秒轮询一次,这个MySQL查询效率低下吗?

时间:2012-11-08 21:32:44

标签: mysql sql polling

我有一个网页,每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),而是记录上次投票的日期时间,然后检查它?

2 个答案:

答案 0 :(得分:4)

NOW() - INTERVAL 30 SECOND只对查询执行一次,而且速度非常快。做其他事情的开销几乎肯定会对性能造成更糟的影响。

如果你有复合索引(active,group_id,last_updated),它将使性能达到最佳。

由于你在select中执行u。*,我不会尝试为查询创建覆盖索引。

答案 1 :(得分:0)

这两种方法都应该给出相同的结果 - 计算速度非常快,并且只在执行查询时发生一次。您的查询速度将更多地取决于您已编制索引的字段等。