为什么即便 SQL 语句应用了索引,查询速度仍显得缓慢?
- 内容介绍
- 文章标签
- 相关推荐
本文共计2887个文字,预计阅读时间需要12分钟。
聊聊索引和慢查询,经常遇到的一个问题:一个SQL语句使用了索引,为什么还会记录到慢查询日志中?
一、索引与慢查询
二、聊聊索引和慢查询
聊一聊索引和慢查询,经常遇到的一个问题:一个SQL语句使用了索引,为什么还是会记录到慢查询日志之中? 一、索引与慢查询聊一聊索引和慢查询,经常遇到的一个问题:一个SQL语句使用了索引,为什么还是会记录到慢查询日志之中?
为了说明,创建一个表t,该表3个字段,一个主键索引,一个普通索引
CREATE TABLE `t` (
`id` int(11) NOT NULL,
`a` int(11) DEFAULT NULL,
`b` int(11) DEFAULT NULL,
PRIMARY KEY (`id`),
KEY `a` (`a`)
) ENGINE=InnoDB;
insert into t values (1, 1, 1), (2, 2, 2);
首先MySQL判断一个语句是不是慢查询语句,用的是语句执行时间,它把语句执行时间跟long_query_time这个系统参数做比较,如果语句执行时间比long_query_time还大,就会把这个语句记录到慢查询日志里。
long_query_time这个参数它的默认值是10s,在生产上我们不会设置这么大的值,一般会设置1s,对于一些对延迟比较敏感的业务,会设置一个比1还小的值,而对于语句是否使用了索引,它的意思是语句执行过程中有没有用到表的索引。
本文共计2887个文字,预计阅读时间需要12分钟。
聊聊索引和慢查询,经常遇到的一个问题:一个SQL语句使用了索引,为什么还会记录到慢查询日志中?
一、索引与慢查询
二、聊聊索引和慢查询
聊一聊索引和慢查询,经常遇到的一个问题:一个SQL语句使用了索引,为什么还是会记录到慢查询日志之中? 一、索引与慢查询聊一聊索引和慢查询,经常遇到的一个问题:一个SQL语句使用了索引,为什么还是会记录到慢查询日志之中?
为了说明,创建一个表t,该表3个字段,一个主键索引,一个普通索引
CREATE TABLE `t` (
`id` int(11) NOT NULL,
`a` int(11) DEFAULT NULL,
`b` int(11) DEFAULT NULL,
PRIMARY KEY (`id`),
KEY `a` (`a`)
) ENGINE=InnoDB;
insert into t values (1, 1, 1), (2, 2, 2);
首先MySQL判断一个语句是不是慢查询语句,用的是语句执行时间,它把语句执行时间跟long_query_time这个系统参数做比较,如果语句执行时间比long_query_time还大,就会把这个语句记录到慢查询日志里。
long_query_time这个参数它的默认值是10s,在生产上我们不会设置这么大的值,一般会设置1s,对于一些对延迟比较敏感的业务,会设置一个比1还小的值,而对于语句是否使用了索引,它的意思是语句执行过程中有没有用到表的索引。

