索引跳跃式扫描

索引跳跃式扫描(INDEX SKIP SCAN)适用于所有类型的复合B树索引(包括唯一性索引和非唯一性索引),它使那些在where条件中没有对目标索引的前导列指定查询条件但同时又对该 索引的非前导列指定了查询条件的目标SQL依然可以用上该索引,这就像是在扫描该索引时跳过了它的前导列,直接从该索引的非前导列开始扫描一样(实际的执行过程并非如此),这也是索引跳跃式扫描中"跳跃"(SKIP)一词的含义。

为什么在where条件中没有对目标索引的前导列指定查询条件但Oracle依然可以用上该索引呢?这是因为Oracle帮你对该索引的前导列的所有distinct值做了遍历。就是优化器会帮你把SQL语句改写成带了索引列参与的语句

select * from stu where stu_id= 100;

被改写成了

select * from stu where stu_id= 100 and gender = 'F' 
union all  
select * from stuwhere  stu_id = 100 and gender = 'M' ;

你可能感兴趣的:(#,MYSQL,mysql)