`

Oracle执行计划解释 - Index

 
阅读更多
根据索引的类型与where限制条件的不同,有5种类型的索引扫描:
    索引唯一扫描(index unique scan)
    索引范围扫描(index range scan)
    索引全扫描(index full scan)
    索引快速扫描(index fast full scan)
    索引跳跃式扫描 (index skip scan)

(1) 索引唯一扫描(index unique scan)
    通过唯一索引查找一个数值经常返回单个ROWID.如果存在UNIQUE 或PRIMARY KEY 约束(它保证了语句只存取单行)的话,Oracle经常实现唯一性扫描。
    使用唯一性约束的例子:
    SQL> explain plan for
    select empno,ename from emp where empno=10;
    Query Plan
------------------------------------
    SELECT STATEMENT [CHOOSE] Cost=1
    TABLE ACCESS BY ROWID EMP [ANALYZED]
    INDEX UNIQUE SCAN EMP_I1

(2) 索引范围扫描(index range scan)
    使用一个索引存取多行数据,在唯一索引上使用索引范围扫描的典型情况下是在谓词(where限制条件)中使用了范围操作符(如>、<、<>、>=、<=、between)
    使用索引范围扫描的例子:
    SQL> explain plan for select empno,ename from emp
    where empno > 7876 order by empno;
    Query Plan
--------------------------------------------------------------------------------
    SELECT STATEMENT[CHOOSE] Cost=1
    TABLE ACCESS BY ROWID EMP [ANALYZED]
    INDEX RANGE SCAN EMP_I1 [ANALYZED]
    在非唯一索引上,谓词col = 5可能返回多行数据,所以在非唯一索引上都使用索引范围扫描。
    使用index rang scan的3种情况:
    (a) 在唯一索引列上使用了range操作符(> < <> >= <= between)
    (b) 在组合索引上,只使用部分列进行查询,导致查询出多行
    (c) 对非唯一索引列上进行的任何查询。

(3) 索引全扫描(index full scan)
    与全表扫描对应,也有相应的全索引扫描。而且此时查询出的数据都必须从索引中可以直接得到。
    全索引扫描的例子:
    An Index full scan will not perform single block i/o''s and so it may prove to be inefficient.
    e.g.
    Index BE_IX is a concatenated index on big_emp (empno, ename)
    SQL> explain plan for select empno, ename from big_emp order by empno,ename;
    Query Plan
--------------------------------------------------------------------------------
    SELECT STATEMENT[CHOOSE] Cost=26
    INDEX FULL SCAN BE_IX [ANALYZED]

(4) 索引快速扫描(index fast full scan)
    扫描索引中的所有的数据块,与 index full scan很类似,但是一个显著的区别就是它不对查询出的数据进行排序,即数据不是以排序顺序被返回。在这种存取方法中,可以使用多块读功能,也可以使用并行读入,以便获得最大吞吐量与缩短执行时间。
    索引快速扫描的例子:
    BE_IX索引是一个多列索引: big_emp (empno,ename)
    SQL> explain plan for select empno,ename from big_emp;
    Query Plan
------------------------------------------
    SELECT STATEMENT[CHOOSE] Cost=1
    INDEX FAST FULL SCAN BE_IX [ANALYZED]
    只选择多列索引的第2列:
    SQL> explain plan for select ename from big_emp;
    Query Plan
------------------------------------------
    SELECT STATEMENT[CHOOSE] Cost=1
    INDEX FAST FULL SCAN BE_IX [ANALYZED]

(5) 索引跳跃式扫描 (index skip scan)
    当查询可以通过组合索引得到结果,而且返回结果很少,并且where条件中没有包含索引引导列的时候,可能执行index skip scan
索引跳跃式扫描发生的条件:
1.必须是组合索引。
2.引导列没有出现在where条件中

分享到:
评论

相关推荐

    Oracle的执行计划--上

    ### Oracle的执行计划详解 #### 一、执行计划的概念 执行计划是指在Oracle数据库中执行SQL查询时所采用的数据访问路径。它详细描述了数据库如何处理查询请求,包括数据读取的方式、使用的索引以及连接操作等。执行...

    oracle 执行计划 详解

    "Oracle 执行计划详解" Oracle 执行计划是数据库性能优化的关键。为了更好地理解和优化 Oracle 数据库的执行计划,我们需要了解执行计划的生成过程、优化方法和执行计划的解读方法。 执行计划生成过程 执行计划的...

    Oracle执行计划介绍与测试.pdf

    ### Oracle执行计划深入解析 #### 引言 在数据库领域,尤其对于大型企业级应用,Oracle数据库因其强大的功能和稳定性而被广泛采用。在Oracle中,执行计划是数据库优化器根据SQL语句特性生成的一系列步骤,用于指导...

    oracle执行计划解读

    Oracle 执行计划解读 Oracle 执行计划是一种查询执行路径的表示形式,它展示了 Oracle 数据库在执行查询时访问数据的路径。下面是 Oracle 执行计划的详细解读,包括执行计划的定义、访问数据的方式、执行计划层次...

    oracle怎么查看执行计划

    ### Oracle如何使用AUTOTRACE查看执行计划 在Oracle数据库管理中,查看SQL语句的执行计划是一项重要的技能,这有助于优化查询性能、诊断性能问题等。AUTOTRACE是Oracle提供的一种强大的工具,用于自动展示SQL语句的...

    怎样看懂Oracle的执行计划

    Oracle 执行计划详解 Oracle 执行计划是指 Oracle 数据库在执行查询语句时所采取的访问路径。了解执行计划对于优化查询语句、提高数据库性能至关重要。 什么是执行计划 执行计划是 Oracle 数据库在执行查询语句时...

    oracle执行计划详解

    Oracle 执行计划详解是数据库管理系统中一个非常重要的概念。本文将详细介绍 Oracle 执行计划的相关概念、访问数据的存取方法、表之间的连接等内容,并对总结和概述,以便于理解和记忆。 一、相关的概念 1. Rowid ...

    Oracle 执行计划PPT

    Oracle 执行计划是数据库管理系统在处理SQL查询时制定的一系列步骤,用于高效地检索和处理数据。它是Oracle数据库优化器(Optimizer)根据统计信息、成本估算和已存在的索引等信息生成的。优化器有两种主要的工作...

    oracle执行计划文档

    除了以上概念,Oracle执行计划还包括其他访问方法,如索引扫描(Index Scan)、索引唯一扫描(Index Unique Scan)、索引快速全扫描(Index Fast Full Scan)以及各种类型的连接操作,如嵌套循环(Nested Loop)、...

    oracle执行计划建立与阅读

    Oracle执行计划是数据库管理系统在处理SQL语句时的预估工作流程,它是Oracle优化器根据当前数据分布、索引情况和系统资源等信息选择的最佳执行策略。了解和分析执行计划对于提升SQL语句的性能至关重要。 一、生成...

    oracle执行计划解释

    ### Oracle执行计划详解 Oracle执行计划是数据库管理系统在执行SQL语句时,为查询操作选择的最佳路径,旨在提高查询效率和资源利用。本文将深入解析Oracle执行计划的关键概念及其应用场景,帮助DBA和开发人员更好地...

    Oracle的执行计划

    在深入了解Oracle执行计划之前,我们先来了解一下几个重要的概念,这些概念对于理解执行计划至关重要。 **共享SQL语句**:为了提高性能并减少资源消耗,Oracle在第一次解析某个SQL语句后,会将其以及相应的执行计划...

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

    《Oracle执行计划与SQL优化实例》这一主题深入探讨了数据库管理与优化的关键方面,尤其针对Oracle数据库环境。本文旨在解析并扩展此PPTX文件中提及的重要知识点,涵盖执行计划的概念、获取方法、解读技巧以及SQL优化...

    Oracle 执行计划

    Oracle执行计划是数据库执行SQL语句前确定的操作步骤序列。优化器根据表的统计信息、存储参数、可用的执行路径等生成执行计划,以实现最快的查询速度。执行计划通常用一系列数据库操作符来表示,这些操作符及其顺序...

    ORACLE执行计划和SQL调优

    【Oracle执行计划和SQL调优】是数据库管理中至关重要的环节,主要涉及到如何高效地运行SQL语句,提高数据库性能。下面将详细讲解执行计划的相关概念以及SQL调优的策略。 1. **Rowid的概念**:Rowid是Oracle数据库中...

    精通ORACLE执行计划

    在Oracle数据库中,执行计划是数据库管理系统为了执行SQL查询而制定的一系列操作步骤。它决定了数据如何被访问、如何过滤、如何排序以及如何组合,...因此,掌握Oracle执行计划的相关知识对于优化数据库性能至关重要。

    oracle执行计划

    ### Oracle执行计划详解 #### 一、Oracle执行计划概述 **Oracle执行计划**是指数据库管理系统在执行SQL查询时,为了高效地检索数据所选择的一系列步骤。这些步骤由Oracle优化器决定,它会评估多种可能的执行路径,...

    oracle 执行计划

    ### Oracle执行计划详解 在数据库管理与优化领域中,理解并掌握如何查看及解读Oracle执行计划是一项非常重要的技能。执行计划对于SQL语句的性能优化至关重要,它可以帮助我们快速定位到可能存在的性能瓶颈,并据此...

    ORACLE执行计划和SQL调优.pptx

    Oracle执行计划和SQL调优是数据库管理中至关重要的主题,主要涉及如何优化SQL查询以提高数据库性能。在Oracle数据库系统中,SQL语句的执行效率直接影响到整个应用程序的响应速度和资源消耗。以下是对相关概念的详细...

Global site tag (gtag.js) - Google Analytics