我对条件分组进行查询需要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
有什么方法可以优化查询性能?
答案 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
来说是最佳选择,并且它正在“覆盖”。