我是靠谱客的博主 哭泣心情,最近开发中收集的这篇文章主要介绍MySQL根据主键查询慢SQL_面试官:为什么用了索引,查询还是慢?,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

7551cc2d2a1223d7824bfe5262a8e33d.png

经常有同学问我,我的一个SQL语句使用了索引,为什么还是会进入到慢查询之中呢?今天我们就从这个问题开始来聊一聊索引和慢查询。

案例剖析

为了实验,我创建了如下表:

该表有三个字段,其中用id是主键索引,a是普通索引。

首先SQL判断一个语句是不是慢查询语句,用的是语句的执行时间。他把语句执行时间跟long_query_time这个系统参数作比较,如果语句执行时间比它还大,就会把这个语句记录到慢查询日志里面,这个参数的默认值是10秒。当然在生产上,我们不会设置这么大,一般会设置1秒,对于一些比较敏感的业务,可能会设置一个比1秒还小的值。

语句执行过程中有没有用到表的索引,可以通过explain一个语句的输出结果来看KEY的值不是NULL。

我们看下 的KEY结果是NULL

(图一)

的KEY结果是PRIMARY,就是我们常说的使用了主键索引

(图二)

的KEY结果是a,表示使用了a这个索引。

(图三)

虽然后两个查询的KEY都不是NULL,但是最后一个实际上扫描了整个索引树a。

假设这个表的数据量有100万行,图二的语句还是可以执行很快,但是图三就肯定很慢了。如果是更极端的情况,比如,这个数据库上CPU压力非常的高,那么可能第2个

最后

以上就是哭泣心情为你收集整理的MySQL根据主键查询慢SQL_面试官:为什么用了索引,查询还是慢?的全部内容,希望文章能够帮你解决MySQL根据主键查询慢SQL_面试官:为什么用了索引,查询还是慢?所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(55)

评论列表共有 0 条评论

立即
投稿
返回
顶部