sql优化中的单表索引优化

如题

表中没有索引的情况下执行查询的sql,如下图

sql使用到了3个字段进行筛选数据,但是在筛选过程中出现了全表扫描文件内排序的情况,这种情况在大量的数据中是坚决要杜绝的。由于article表没有新建索引,我们对需要使用到的字段建立索引来测试一下是否能够解决这两个突出的问题,如图

我们对sql中使用到的3个字段建立了索引,那么效果如图所示

全表扫描是没有了,但是文件内排序任然存在,这是因为建立的索引是复合索引,如图

mysql在执行查询的时候,由于comments这个字段是一个范围值,所以导致了comments后面的views的索引失效,可以简单的记忆为(组合索引中,范围以后全失效)。

如果删除掉原有的索引,给category_id和views着两个字段建立索引效果会如何呢

可以看到,对sql中的两个字段建立了索引后,文件内排序没有了,而且type是一个ref,ref是const。这些具体的值可以参考我的另一篇文章 mysql优化之 Explain 分析sql语句效率

水文,大家分享交流

猜你喜欢

转载自blog.csdn.net/m0_37852399/article/details/87855072
今日推荐