简体   繁体   English

MySQL-查询速度非常慢

[英]MySQL - Query very slow

I have statements like this that are timing out: 我有这样的语句正在超时:

SELECT COUNT(*) FROM A WHERE A.value1 IN (
  SELECT A.value1 FROM A WHERE A.value2 = 0
)

Table A has 13,000,000+ rows in it, and because of some reasons, I can't use indexes. 表A中有13,000,000+行,由于某些原因,我不能使用索引。

So how to speed it up without use indexes? 那么如何在不使用索引的情况下加快速度呢? I'm using MySQL 5.6. 我正在使用MySQL 5.6。

Any help please. 请帮忙。

I would first try using exists . 我首先尝试使用exists This often optimizes better: 这通常可以更好地进行优化:

SELECT COUNT(*)
FROM A 
WHERE EXISTS (SELECT 1
              FROM A A2
              WHERE A2.value2 = 0 AND A2.value1 = A.value1
             );

The optimal index for this is A(value2, value1) . 最佳索引是A(value2, value1)

You could also use two levels of aggregation: 您还可以使用两种聚合级别:

select sum(cnt)
from (select value1, count(*) as cnt
      from a
      group by value1
      having sum(value2 = 0) > 0
     ) a;

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM