03 2022 档案

摘要:1.Extra :Using index condition 表示使用到联合索引,并进行了回表查询;因为想要查询的列不止a、b、c三列,索引需要回表查询 2.Extra:Using index 表示使用到了覆盖索引(想要查询的列联合索引已经覆盖到了,没有进行回表查询) 阅读全文
posted @ 2022-03-14 16:10 奔跑小王子 阅读(75) 评论(0) 推荐(0)
摘要:在正文之前首先讲一下mysql构建索引树(B+)时的特性,例如创建(a,b,c)一个联合索引,则mysql会以a字段的顺序来构建B+数,然后a如果相同,则b字段再排序,依此类推。 所以查询条件中如果不包含a列的话,一般都是不会命中索引的。因为无论是b列还是c列,相对来说都是一个无序的,只是在a列相同 阅读全文
posted @ 2022-03-14 15:40 奔跑小王子 阅读(748) 评论(0) 推荐(0)
摘要:在上一篇博客中,提到了遵循最左前缀匹配原则就会命中索引,那么我们试想一下,如果我们的where后边条件字段打乱会影响命中索引吗?先来进行下边的实验: 可以看到实验结果,where条件字段顺序没有按照索引的字段顺序,依然不影响命中索引。因为Mysql中有查询优化器,会自动优化查询顺序。 阅读全文
posted @ 2022-03-11 17:39 奔跑小王子 阅读(672) 评论(0) 推荐(0)
摘要:写这篇文章是因为读到一篇关于联合索引在B+树上的存储结构和查找方式的文章 https://www.cnblogs.com/ibigboy/p/12373978.html 而做了一些相关的实验来验证猜想。 下面来进行sql语句实验: 1. select r.* from my_test r where 阅读全文
posted @ 2022-03-11 17:13 奔跑小王子 阅读(579) 评论(0) 推荐(0)