mysql-查询速度非常慢

6l7fqoea  于 2021-06-20  发布在  Mysql
关注(0)|答案(1)|浏览(383)

我有类似这样的陈述,但都已经过时了:

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

表a中有13000000+行,由于某些原因,我不能使用索引。
那么如何在不使用索引的情况下加速呢?我正在使用MySQL5.6。
请帮忙。

nwo49xxi

nwo49xxi1#

我会先尝试使用 exists . 这通常可以更好地优化:

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

这方面的最佳指标是 A(value2, value1) .
您还可以使用两个聚合级别:

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

相关问题