您当前的位置: 首页 > 学无止境 > 心得笔记 网站首页心得笔记
5-2 MySQL创建高性能的索引考察点
发布时间:2020-10-05 13:02:22编辑:雪饮阅读()
关于左前缀复合(组合)索引的一个误区
有test表及其复合索引abc建立在对应a、b、c字段中如下:
有人说该复合索引对sql如select * from test where a=1 and b=2;是有索引效果的,但是对于sql如select * from test where a=1 and c=3;则是没有索引效果的。实际上并非如此:
可以看到其实这两个都使用了索引,只是后者仅仅使用了一部分。
参考资料:http://www.gaojiupan.cn/xuewuzhijing/xindebiji/3224.html
关于like模糊查询时候的索引
首先我们在上面表中添加name字段并且为其添加索引name如:
然后我们来看看我这里现在的一些测试数据
然后我们来对比like以某关键字词开始进行模糊以及该关键字词两端模糊的查询效果
很明显结果条数是不同的,并且第一个查询速度快。然后我们来对比下查询计划
可以看到第一个查询速度快,但其实并没有用到索引,毕竟数据量太少,用索引反而慢了。
第二个反而使用了索引,所以对于like索引优化是会损失需求的。
范围查询索引误区
在id字段有索引时
有人说类似where id>1 and id<100的语法数据库是不走索引的,直接all的。
对此我保持怀疑态度。那么我们来测试一下
首先这里先用上面我们这个test表测试下,test表本来就有id的主键索引
可以看到的确是走了ALL,那么接下来我在换一个我实际项目中有很多数据的且id为主键索引的一个表
可以看到这次是range而不是all了,所以说这句话也并非全对。
关键字词:复合索引,组合索引,左前缀,mysql,like,模糊