[英]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.