跳跃式索引扫描的原理挺有意思的,尤其在用组合索引的时候。如果你的WHERE语句只用了第二列,那全索引扫描就有点浪费了,跳跃式索引扫描在这时候出场,效率会提升。

它比起全索引扫描,读取的数据块更少,速度也更快。比如你有个索引是(user_id, status),但查询里只写了WHERE status = 'active',那 Oracle 就用跳跃式来扫,跳过前面的user_id部分,效率还挺高。

不过要注意哦,这种扫描方式不是每次都会触发,得看你表的数据分布,还有统计信息是否新鲜。你可以通过EXPLAIN PLAN看下执行计划,或者用DBMS_XPLAN.DISPLAY配合一下,能看到到底用了哪种扫描。

顺带一提,如果你对索引优化比较感兴趣,下面这些文章也挺值得一读的:

如果你平时经常写 SQL,又遇到那种组合索引查询效率忽高忽低的情况,建议看看这些文章,思路会清楚多。