由200万条记录组成的Mysql查询组耗时7秒

由200万条记录组成的Mysql查询组耗时7秒,mysql,performance,Mysql,Performance,我有一个按条件分组的查询,需要7秒钟。我优化了它的所有数据类型,并给出了索引 索引执行前时间:15秒 索引和优化数据类型后,所用时间:7秒 我的数据库要大得多,我必须运行大约15个查询来准备我的报告 单个查询需要7秒,然后15*7=105秒,这太耗时了 示例查询: Select ca_id, count(ca_id), email, cadate from tbl_zonec group by email, cadate,

我有一个按条件分组的查询,需要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 
有没有办法优化查询性能

去掉身份证;这是完全错误的,没有它在小组中。样品同上

如果ca_id不能为空,请说COUNT*

你好像每次都在扫描整张桌子。你会得到不同的结果吗?正在将该表添加到中吗?是否修改或删除旧数据,或者这实际上是一个一次写入表?如果后者,则考虑建立和维护一个;速度会快得多。也许是10倍

请提供“显示创建表”。什么是主键?如果它不是以电子邮件、cadate、ca_id开头,那么可能会有改进

在不改变PK的情况下,这将运行得更快一些:INDEXemail、cadate、ca_id、sample、id——这对于GROUP BY来说是最佳选择,而且它正在覆盖


您是否使用ORDER BY NULL?在这里发布您的示例查询和示例数据useful@PraveenE示例查询=>选择id、countca_id、email、Sample、cadate、from tbl_zonec、group by email、cadate、ca_idtry with ORDER by NULLPost您的查询、示例数据、问题中MySQL解释命令的结果。将对其他人有用。