为什么我使用了索引,查询还是慢?
★★★建议星标我们★★★
Java进阶架构师★“星标”!这样才不会错过每日进阶架构文章呀 。
文章插图
文章插图
2020年Java原创面试题库连载中
【000期】Java最全面试题库思维导图
【020期】JavaSE系列面试题汇总(共18篇)
【028期】JavaWeb系列面试题汇总(共10篇)
【042期】JavaEE系列面试题汇总(共13篇)
【049期】数据库系列面试题汇总(共6篇)
【053期】中间件系列面试题汇总(共3篇)
【065期】数据结构与算法面试题汇总(共11篇)
【076期】分布式面试题汇总(共10篇)
【077期】综合面试题系列(一)
【078期】综合面试题系列(二)
【079期】综合面试题系列(三)
【080期】综合面试题系列(四)
【081期】综合面试题系列(五)
【082期】综合面试题系列(六)
【083期】综合面试题系列(七)
【084期】综合面试题系列(八)
【085期】综合面试题系列(九)
【086期】综合面试题系列(十)
【087期】综合面试题系列(十一)
【088期】综合面试题系列(十二)
【089期】综合面试题系列(十三)
更多内容 , 点击上面蓝字查看
文章插图
本文来源:
cnblogs.com/jackyfei/p/12122767.html
经常有朋友问到:我的一个SQL语句使用了索引 , 为什么还是会进入到慢查询之中呢?今天我们就从这个问题开始来聊一聊索引和慢查询 。
案例剖析 言归正传 , 为了实验 , 我创建了如下表:
CREATE TABLE `T`(`id` int(11) NOT ,`a` int(11) DEFAUT ,PRIMARY KEY(`id`),KEY `a`(`a`)) ENGINE=InnoDB;
该表有三个字段 , 其中用id是主键索引 , a是普通索引 。
首先SQL判断一个语句是不是慢查询语句 , 用的是语句的执行时间 。 他把语句执行时间跟long_query_time这个系统参数作比较 , 如果语句执行时间比它还大 , 就会把这个语句记录到慢查询日志里面 , 这个参数的默认值是10秒 。 当然在生产上 , 我们不会设置这么大 , 一般会设置1秒 , 对于一些比较敏感的业务 , 可能会设置一个比1秒还小的值 。
语句执行过程中有没有用到表的索引 , 可以通过explain一个语句的输出结果来看KEY的值不是 。
我们看下 explain select * from t;
的KEY结果是
文章插图
(图一)
explain select * from t where id=2;
的KEY结果是PRIMARY , 就是我们常说的使用了主键索引
文章插图
(图二)
explain select a from t;
的KEY结果是a , 表示使用了a这个索引 。
文章插图
(图三)
虽然后两个查询的KEY都不是 , 但是最后一个实际上扫描了整个索引树a 。
假设这个表的数据量有100万行 , 图二的语句还是可以执行很快 , 但是图三就肯定很慢了 。 如果是更极端的情况 , 比如 , 这个数据库上CPU压力非常的高 , 那么可能第2个语句的执行时间也会超过long_query_time , 会进入到慢查询日志里面 。
所以我们可以得出一个结论:是否使用索引和是否进入慢查询之间并没有必然的联系 。 使用索引只是表示了一个SQL语句的执行过程 , 而是否进入到慢查询是由它的执行时间决定的 , 而这个执行时间 , 可能会受各种外部因素的影响 。 换句话来说 , 使用了索引你的语句可能依然会很慢 。
全索引扫描的不足那如果我们在更深层次的看这个问题 , 其实他还潜藏了一个问题需要澄清 , 就是什么叫做使用了索引 。
我们都知道 , InnoDB是索引组织表 , 所有的数据都是存储在索引树上面的 。 比如上面的表t , 这个表包含了两个索引 , 一个主键索引和一个普通索引 。 在InnoDB里 , 数据是放在主键索引里的 。 如图所示:
文章插图
可以看到数据都放在主键索引上 , 如果从逻辑上说 , 所有的InnoDB表上的查询 , 都至少用了一个索引 , 所以现在我问你一个问题 , 如果你执行select from t where id>0
, 你觉得这个语句有用上索引吗?
文章插图
- 看不上|为什么还有用户看不上华为Mate40系列来看看内行人怎么说
- 先别|用了周冬雨的照片,我会成为下一个被告?自媒体创作者先别自乱阵脚
- 巨头|“社区薇娅”都不够用了 一线互联网巨头全员下场卖菜
- 手机|iPhone12 Pro居然比mini还好卖?网友:24期免息起作用了!
- 制药领域|为什么AI制药这么火,为什么是现在?
- 手机壳里头|为什么要在手机壳里面夹钱?10个有9个不懂,我才知道大有讲究
- 短视频|全球最火APP?抖音爆火背后离不开这几剂“猛药”为什么抖音能够这么火?
- 电商快递|包邮不香吗,为什么还有人加49元让小哥穿西装专车送快递?
- 团队|为什么项目管理非常重要?
- 猫腻|为什么拼多多上商品价格那么便宜还包邮?有什么猫腻?看完明白了