赞
踩
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自然可以走索引排序。不管是升序和降序,都可以走索引。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。