我有一个按条件分组的查询需要7秒钟。我已经优化了它的所有数据类型,并给出了索引。
索引前执行时间:索引后15秒,优化数据类型所用时间:7秒。
我的数据库要大得多,我必须运行大约15个查询来准备我的报告单个查询需要7秒然后15*7=105秒太耗时了。
示例查询:
Select
ca_id,
count(ca_id),
email,
cadate
from
tbl_zonec
group by
email,
cadate,
ca_id
有没有办法优化查询性能?
1条答案
按热度按时间h6my8fg21#
摆脱
id
; 不把它放在家里是完全错误的GROUP BY
. 同上sample
.如果
ca_id
不能是NULL
,说COUNT(*)
.你好像每次都在扫描整张table。你得到了不同的结果吗?正在将表添加到中吗?是否修改或删除旧数据,或者这实际上是一个只写一次的表?如果是后者,则考虑建立和维护一个汇总表;会快很多(可能是10倍。)
请提供
SHOW CREATE TABLE
. 什么是PRIMARY KEY
? 如果是的话,不要从email, cadate, ca_id
,则可能有改进。在不改变pk的情况下,这将运行得更快一些:
INDEX(email, cadate, ca_id, sample, id)
--这是最佳的GROUP BY
这就是“掩护”。