MySQL查询组按200万条记录耗时7秒

时间:2018-07-17 10:22:54

标签: mysql performance

我对条件分组进行查询需要7秒钟。我已经优化了所有数据类型并指定了索引。

索引执行前的时间:15秒 索引并优化数据后,键入其花费的时间:7秒。

我的数据库更大,我必须运行约15个查询才能准备报告 单个查询需要7秒,然后15 * 7 = 105秒,这非常耗时。

样本查询:

Select 
    id, 
    count(ca_id),
    email,
    sample,
    cadate
from
    tbl_zonec
group by 
    email, 
    cadate,
    ca_id 

有什么方法可以优化查询性能?

1 个答案:

答案 0 :(得分:0)

  • 摆脱id;如果没有将它放在GROUP BY中,这是完全错误的。 sample的同上。

  • 如果ca_id不能为NULL,请说COUNT(*)

  • 您似乎每次都在扫描整个表。你得到不同的结果吗?表格被添加到了吗?是修改或删除旧数据,还是有效的一次写入表?如果是后者,则考虑构建和维护Summary table;它会快很多。 (可能是10倍)。

  • 请提供SHOW CREATE TABLE。什么是PRIMARY KEY?如果不是 email, cadate, ca_id开头,则可能会有所改进。

  • 在不更改PK的情况下,运行速度会更快一点:INDEX(email, cadate, ca_id, sample, id) -对GROUP BY来说是最佳选择,并且它正在“覆盖”。