我有一个InnoDB表,大约有7M行,大小为4GB。结构如下(col名称隐藏):
当我运行查询SELECT COUNT(id) FROM table1 WHERE col7 != ''
时,返回计数需要很长时间,大约在50到70秒之间。
EXPLAIN EXTENDED
报告是:
SELECT count(id) from table1
运行约5秒钟,但我也需要使用WHERE
子句。
我的问题是服务器的正常速度,以及可以采取哪些措施加快速度,特别是第二次查询。
服务器正在运行MySQL v5.6.35。
答案 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