我在VPS上运行一个论坛,运行Percona DB,使用PHP 5.5.8,操作码缓存等,这些都非常快速。
我也在运行New Relic,(是的,我有T恤)。
当我正在调整应用程序时,优化论坛正在为数据库进行查询,以查找我消耗时间列表顶部的任何查询。
现在,我最常用的查询,因为它最常用的是每个主题的简单点击计数器。
所以查询是:
UPDATE topics SET num_views = num_views + 1 WHERE id_topic = ?
我想不出更简单的方法来执行此操作,或者是否有其他各种方法可能更快,以及为什么。
有没有办法让这个查询更快,或者我可以添加一个索引来提高速度?
感谢。
答案 0 :(得分:1)
假设id_topic
被编入索引,你就不会变得更好。我唯一的建议是查看此表中的其他索引,并确保没有包含num_views
的冗余索引。这会降低此更新的更新速度。
例如,如果您有以下索引
索引#1将是无关的,只是添加到插入/更新开销
答案 1 :(得分:0)
不确定这是否有所改善,但您可以查看以下内容:
如果只为表中的每个页面添加一行而不是锁定和更新行怎么样?
然后使用计数来获取结果,并缓存它们而不是每次都进行计数?
(也许每天压缩一次表?)