引入问题: 为什么创建了索引,依旧还是慢查询?
来来来,先创建个最简单的表
CREATE TABLE
test
(
id
int(11) NOT NULL,
a
int(11) DEFAULT NULL,
b
int(11) DEFAULT NULL,
PRIMARY KEY (id
),
KEYa
(a
)
) ENGINE=InnoDB;
创建一个表 test,表有 3 个字段,分别是 id、a、b,id 是主键索引,在表上还创建了一个普通索引a。MySQL判断一个查询语句是不是慢查询,用的是语句的执行时间。把语句执行时间,与 long_query_time 这个系统参数做比较。
如果语句的执行时间比 long_query_time 这个参数大,就会把语句记录到慢查询日志中。long_query_time 这个参数默认值是 10 秒。
简单写几个select 语句,explain 一下,看一下 KEY 字段是不是 NULL,判断有没有使用索引。
是否使用了索引,只是表示了一个 sql 语句的执行过程,而是否记录了慢查询,由他的执行时间决定,而执行时间,可能受各种外部因素的影响。所以说是否使用了索引,与是否是慢查询间,并没有必然的联系。