【发布时间】:2011-05-22 20:07:23
【问题描述】:
我想知道如果我在以下条件下运行此查询对性能的影响。
查询:
select `players`.*, count(`clicks`.`id`) as `clicks_count`
from `players` left join `clicks` on `clicks`.`player_id` = `players`.`id`
group by `players`.`id`
order by `clicks_count` desc
limit 1
条件:
- 在我希望得到的 clicks 表中 1分钟插入1000次
- clicks 表将包含更多 然后是 1,000,000 行
- 玩家表将包含 10,000 行
- 玩家表每 5 次插入一次 分钟
如果我在 1 分钟内运行查询 1000 次,我想知道性能方面的预期。
谢谢
【问题讨论】:
-
如果不知道很多关于您的服务器和设置的事情,就不可能说出来。为什么不简单地尝试一下?
-
@Yonathan,这样的查询看起来不错,在您真正遇到慢速之前不要担心性能,而不是回来询问有关它的一些细节问题。 “过早的优化是万恶之源” -- Donald Knuth.
-
好的,谢谢。一如既往的
Trial and error! -
如果事情变得缓慢,
EXPLAIN有时可以为您提供有关查询是如何完成的线索。这是一个友好的基于树的版本:xaprb.com/blog/2007/07/29/introducing-mysql-visual-explain -
确保使用事务。每秒 1000 个 INSERTS 和每秒 1000 个 COMMITS 之间存在很大差异(祝你好运!)。还要决定哪个更重要——插入或查询。索引将加速查询(如果覆盖正确),但需要更多的工作来维护。额外的索引可能实际上会损害查询(如果它们破坏了计划)和插入性能。
标签: mysql sql sql-server performance