`
rongxr
  • 浏览: 8807 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
最近访客 更多访客>>
社区版块
存档分类
最新评论

什么是INDEX SKIP SCAN

阅读更多
在查看SQL的执行计划的时候,有时候会看到INDEX SKIP SCAN,其实这个索引扫描路径会发生在多个列建立的复合索引上,如果SQL中谓词条件只包含索引中的部分列,并且这些列不是建立索引时的第一列时,就可 能发生INDEX SKIP SCAN。这里SKIP的意思是因为查询条件没有第一列或前面几列,被忽略了。

引用Oracle文档的例子,比如如下的表:

    employees (sex, employee_id, address)

建立如下索引:

    (sex, employee_id)

如果索引包含如下的数据:

    ('F',98)
    ('F',100)
    ('F',102)
    ('F',104)
    ('M',101)
    ('M',103)
    ('M',105)

索引结构图示如下:


这时如果我们执行以下查询就会触发走INDEX SKIP SCAN:

    SELECT *
       FROM employees
    WHERE employee_id = 101;


这里sex就会被忽略掉了,实际上Oracle并没有真正忽略,而是在逻辑上拆分为2个子索引来查询而已。
分享到:
评论

相关推荐

    sql学习 07.INDEX SKIP SCAN.sql

    sql学习 07.INDEX SKIP SCAN.sql

    MySQL 8.0 之索引跳跃扫描(Index Skip Scan)

    MySQL 8.0.13开始支持 index skip scan 也即索引跳跃扫描。该优化方式支持那些SQL在不符合组合索引最左前缀的原则的情况,优化器依然能组使用组合索引。 talk is cheap ,show me the code 实践 使用官方文档的例子...

    index索引使用模式

    对于联合索引,INDEX SKIP SCAN 可以跳过某些列,当查询的条件在索引的后续列时非常有用。例如,如果有 `(column1, column2)` 的联合索引,而查询条件只涉及到 `column2`,数据库可以跳过 `column1`,直接在 `...

    Oracle CBO优化模式中的5种索引访问方法浅析

    4.索引跳跃扫描(INDEX SKIP SCAN) 5.索引快速全扫描(INDEX FAST FULL SCAN) 索引唯一扫描(INDEX UNIQUE SCAN) 通过这种索引访问数据的特点是对于某个特定的值只返回一行数据,通常如果在查询谓语中使用UNIQE和...

    index索引的8种使用模式

    假设`object_name`和`object_type`上有一个复合索引,且查询仅涉及`object_type`列,那么Oracle可能会采用INDEX SKIP SCAN来提高查询效率。 ### 6. SCAN DESCENDING(降序扫描) 当查询需要按照索引的逆序返回结果...

    简单谈谈MySQL的loose index scan

    MySQL中的 Loose Index Scan 是一种查询优化策略,它与Oracle的Index Skip Scan类似,主要用于提高查询效率,特别是处理涉及`GROUP BY`和`DISTINCT`操作的复杂查询时。在InnoDB存储引擎中,由于索引组织表(IOT,...

    Oracle 9i用索引跳跃扫描提高查询速度

    Oracle 9i 引入了一项名为索引跳跃扫描(Index Skip Scan)的创新特性,这一特性显著提升了针对特定查询场景的性能,尤其是在处理连接索引和多值索引的查询时。传统的索引通常依赖于查询语句中完全匹配索引的所有列...

    数据库性能优化最佳建议.pptx

    当REPORT_DATE是分区条件且后面跟的都是唯一值时,理想的执行计划应该是Index Skip Scan,因为它能直接定位到具体的分区和相关的行,而避免了大量无谓的数据扫描。 - 但是,如果执行计划选择了Index Range Scan,它...

    Oracle优化全攻略二【Oracle 如何使用索引】.docx

    5. **INDEX SKIP SCAN**:在联合索引中,如果前几列的值相同,但后续列的值不同,数据库会跳过相同的前导列,直接找到不同值的记录。 6. **SCAN DESCENDING**:用于降序扫描,例如在ORDER BY子句中指定列的降序排列...

    Oracle执行计划与SQL优化实例.pptx

    - **B树索引扫描**:包括`INDEX UNIQUE SCAN`、`INDEX RANGE SCAN`、`INDEX FULL SCAN`、`INDEX FAST FULL SCAN`和`INDEX SKIP SCAN`。其中,`INDEX FULL SCAN (MIN/MAX)`是一种特殊的扫描方式,用于高效获取索引的...

    个人整理,oracle访问路径(全表扫描、回表、索引范围扫描等等)

    五、索引跳跃扫描(Index Skip Scan) 索引跳跃扫描是一种使用索引来访问表的方式。它跳过索引中的一些记录,以找到匹配的记录。索引跳跃扫描通常用于以下情况: * 查询条件包含索引列,但不是唯一索引。 * 需要...

    oracle index学习总结

    3. Index skip scan:对于范围查询,Oracle可以跳过部分索引节点,提高查询效率。 四、索引使用策略 1. 适当索引:为经常出现在WHERE子句中的列创建索引,避免对更新频繁的列建索引。 2. 分析与调整:定期运行`...

    oracle不走索引可能原因.docx

    1. **INDEX SKIP SCAN**: 当创建了一个组合索引,但是查询只使用了索引的非第一列时,Oracle可能会选择不使用索引,因为它无法直接通过索引来定位数据。INDEX SKIP SCAN是一种优化策略,允许数据库跳过索引的第一个...

    Oracle 执行计划PPT

    - **跳过扫描**(Index Skip Scan):对于包含范围条件和索引列的并集查询,跳过不匹配的索引块。 4. **快速全索引扫描**(Fast Full Index Scan):CBO模式下,对整个索引进行扫描,但不通过表。 5. **索引连接**...

    SKIP_UNUSABLE_INDEXES的使用与索引失效解决方法[参照].pdf

    |* 1 | INDEX UNIQUE SCAN| IDX_A_ID | 1 | 13 | 1 (0)| 00:00:01 | ---------------------------------------------------------- Predicate Information (identified by operation id): -------------------------...

    oracleSQL优化

    - **索引跳跃式扫描(Index Skip Scan)**:在多列索引中跳过部分索引项,适用于部分列有索引,部分列无索引的情况。 - **索引全扫描(Index Full Scan)**:遍历整个索引,通常在全表扫描比索引扫描更优时发生。 ...

    ORACLE数据库SQL优化---表连接类型.docx

    优化器在连接表的同时,还要选择访问单表的最佳方式,包括全表扫描、索引扫描(Index unique scan、index range scan、index full scan、index fast full scan、index skip scan)。选择哪种方式取决于数据分布、...

    oracle索引使用样例

    5. **`INDEX SKIP SCAN`**:用于跨越多个索引分区进行搜索,特别适合于分区索引。 6. **`SCAN DESCENDING`**:按照降序顺序扫描索引。 7. **`INDEX JOIN`**:当查询涉及到多个表时,索引联接可以提高性能。 8. **`...

    Oracle性能优化培训文档

    3. Index Skip Scan:学习如何利用Oracle的Index Skip Scan技术提高多列索引的查询效率。 四、表设计与分区 1. 表空间管理:合理分配和管理表空间,避免空间碎片,提升I/O效率。 2. 表设计:遵循正常化原则,同时...

Global site tag (gtag.js) - Google Analytics