MySQL计数查询使用WHERE子句花费的时间太长

时间:2019-11-30 09:32:39

标签: mysql

我有一个MySQL数据库,我需要使用COUNT来获取行。

该数据库大约有2000万行,如果我尝试以下操作,则

SELECT COUNT(id) FROM database_rows WHERE database_id = 53;

大约需要 5分钟才能提取该计数。

我认为问题的原因在于WHERE子句,但我需要where子句来计算所需的行,而不是表中的每一行。

SELECT COUNT(id) FROM database_rows;

此查询大约需要 60毫秒才能运行。

我无助地看了在线文章,但他们没有提供足够的解决方案。

有什么方法可以优化此查询,并使其仅花费几秒钟的时间?

谢谢。

1 个答案:

答案 0 :(得分:0)

database_id列上的索引可能对您有帮助:

CREATE INDEX idx ON database_rows (database_id);

这假定database_id上没有某种索引,并且值database_id = 53很少出现。如果这些条件之一都不成立,则添加索引可能无济于事。