当前位置:   article > 正文

sql优化,order by 语句和索引是否失效的关系的理解_db2 order by 会影响索引命中吗

db2 order by 会影响索引命中吗

c1 c2 c3 c4四个字段产生一个联合索引。
select * from 表 where c1=1 and c2=5 order by c3
这个sql,c3字段排序走索引吗?
答案是:走索引。
原来我想的是,我的理解是c3不会走索引,因为假设有100条数据,通过c1 c2排序90条,这个期间没有用到c3排序。而剩下10条通过c3排序。也就是说只有10条数据的c3字段是有序的,剩下的90条数据不是通过c3才有序的,对于c3是无序的。如果order by c3走了索引,那么对于只有10条有序的情况下,产生的排序是不准确的。因为order by c3本意是,100条数据通过索引排序。因此c3不会走索引。

更正理解,如果是单纯的100条数据排序,那么自然和我上面说的一样。但是现在不是单纯的100条数据排序,事实上只有10条数据排序。
因为c1=1 and c2=5,这两个条件把其他90条数据都筛选掉了。可以理解为产生了一个只有10条数据的临时表,然后对这个临时表排序。那么这个临时表的索引结构是没有被破坏的,同c3自然可以走索引排序。不管是升序和降序,都可以走索引。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/凡人多烦事01/article/detail/493889
推荐阅读
相关标签
  

闽ICP备14008679号