MySQL COUNT(id)WHERE需要太长时间

时间:2017-04-10 09:18:28

标签: mysql database performance

我有一个InnoDB表,大约有7M行,大小为4GB。结构如下(col名称隐藏):

table structure

当我运行查询SELECT COUNT(id) FROM table1 WHERE col7 != ''时,返回计数需要很长时间,大约在50到70秒之间。 EXPLAIN EXTENDED报告是: enter image description here

SELECT count(id) from table1运行约5秒钟,但我也需要使用WHERE子句。 我的问题是服务器的正常速度,以及可以采取哪些措施加快速度,特别是第二次查询。

服务器正在运行MySQL v5.6.35。

2 个答案:

答案 0 :(得分:2)

为了加快速度,您需要向正在使用where条件的列添加非聚集索引。 这将允许您的数据库更快地完成查询。 为此,试试这个:

此处显示的语句使用name列的前10个字符创建索引(假设该名称具有非二进制字符串类型):

CREATE INDEX part_of_name ON customer (name(10));

资源:https://dev.mysql.com/doc/refman/5.7/en/create-index.html

答案 1 :(得分:1)

这是一个常青问题,在几次讨论中已经讨论过。

这是InnoDB引擎的典型问题

试着看看这些文章

How to optimize COUNT(*) performance on InnoDB by using index

Why does InnoDB do a full scan for COUNT(*)?

http://kingori.co/minutae/2013/05/mysql-count-innodb/