2

我有一个网页,它每 30 秒自动更新用户列表及其评论。

网站上一次最多可以有 300-400 个用户用户。

因此,每 30 秒,通过 AJA 调用一个 PHP 脚本,该脚本运行如下:

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)而是记录最后一次投票的日期时间然后检查是否会更好?

4

2 回答 2

4

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

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

由于您在选择中执行了 u.*,因此我不会尝试为查询创建覆盖索引。

于 2012-11-08T21:38:06.950 回答
0

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

于 2012-11-08T21:39:36.780 回答