`
weiruan85
  • 浏览: 384202 次
  • 性别: Icon_minigender_1
  • 来自: 西安
社区版块
存档分类
最新评论

oracle 执行计划的一些概念

阅读更多

Driving Table(驱动表):
    该表又称为外层表(OUTER TABLE)。这个概念用于嵌套与HASH连接中。如果该row source返回较多的行数据,则对所有的后续操作有负面影响。注意此处虽然翻译为驱动表,但实际上翻译为驱动行源(driving row source)更为确切。一般说来,是应用查询的限制条件后,返回较少行源的表作为驱动表,所以如果一个大表在WHERE条件有有限制条件(如等值限制),则该大表作为驱动表也是合适的,所以并不是只有较小的表可以作为驱动表,正确说法应该为应用查询的限制条件后,返回较少行源的表作为驱动表。在执行计划中,应该为靠上的那个row source

Probed Table(被探查表):
     该表又称为内层表(INNER TABLE)。在我们从驱动表中得到具体一行的数据后,在该表中寻找符合连接条件的行。所以该表应当为大表(实际上应该为返回较大row source的表)且相应的列上应该有索引。在我们后面的描述中,一般将该表称为连接操作的row source


组合索引(concatenated index):
      由多个列构成的索引,如create index idx_emp on emp(col1, col2, col3, ……),则我们称idx_emp索引为组合索引。在组合索引中有一个重要的概念:引导列(leading column),在上面的例子中,col1列为引导列。当我们进行查询时可以使用”where col1 = ? ”,也可以使用”where col1 = ? and col2 = ?”,这样的限制条件都会使用索引,但是”where col2 = ? ”查询就不会使用该索引。所以限制条件中包含先导列时,该限制条件才会使用该组合索引


Join表的几种方式:

1.(Sort Merge Join (SMJ) )
a.首先:生成驱动表的结果集。然后排序
  b.生成被探查表的结果集,然后排序。
  c.然后两个表进行连接。
2.(Nested Loops (NL) )
  两层循环,里边的表循环一次,然后去外边的表去查,得到结果行,然后放入结果集。
   所以较小的表要做为内层的表,即驱动表

  他还有另一个优点:可以返回已经连接的结果集,不必等到所有的结果集都返回,才返回结构。
  
3.(Hash Join)

   较小的表用来构建 row sourcehash 和 tablebitmap。
    外边的表是用来被hash的,并与第一个表生成的hashtable 进行连接。


索引扫描的方式:
索引唯一扫描(index unique scan)
select empno,ename from emp where empno=10;
   empno是主键或者是unique .
索引范围扫描(index range scan)
    empno>59
索引全扫描(index full scan)
   select empno, ename from big_emp order by empno,ename
是排着序的。
索引快速扫描(index fast full scan
    select empno,ename from big_emp;  不排序。
   
分享到:
评论

相关推荐

    ORACLE执行计划的一些基本概念

    以下是一些关于Oracle执行计划的基本概念: 1. **Rowid**: Rowid是Oracle用来标识表中每行数据的唯一地址,它是一个伪列,虽然在表中不实际存储,但可以通过SQL查询访问。Rowid在行的生命周期内保持不变,即使行...

    oracle执行计划详解

    2. Recursive SQL 概念:有时为了执行用户发出的一个 SQL 语句,Oracle 必须执行一些额外的语句,我们将这些额外的语句称之为 ''recursive calls'' 或 ''recursive SQL statements''。这些语句是 Oracle 内部执行的...

    ORACLE执行计划和SQL调优.pptx

    ORACLE 执行计划和 SQL 调优是关系数据库管理系统中非常重要的概念。执行计划是 Oracle 优化器生成的,用于描述如何访问数据库中的数据的计划。execute plan 中包括了访问路径、表扫描顺序、索引使用情况、连接顺序...

    Oracle 执行计划、表分区

    本文将深入探讨Oracle的执行计划和表分区两个重要概念,以及它们如何影响数据库性能。 执行计划是Oracle数据库处理SQL查询的一种步骤序列,它详细描述了数据如何从表中提取、如何进行排序或聚合,以及如何返回到...

    oracle执行计划文档

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

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

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

    Oracle的执行计划

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

    Oracle执行计划.ppt

    Oracle 执行计划 Oracle 执行计划是 Oracle 数据库中的一种机制,用于确定如何访问存储器,得到需要的结果集。...Oracle 执行计划是一个非常重要的概念,对于提高数据库性能和 troubleshooting 都非常重要。

    ORACLE执行计划和SQL调优

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

    Oracle 执行计划

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

    Oracle数据库执行计划

    Oracle数据库执行计划是数据库管理系统在处理SQL查询时所采用的一种策略,它决定了如何最有效地从数据库中检索数据。执行计划涉及到一系列的操作,包括数据的存取方法、索引的使用、连接操作以及优化器的选择。 ...

    ORACLE数据库查看执行计划

    一、执行计划的概念 执行计划是Oracle数据库为一条SQL查询选择的执行策略,它描述了数据如何被检索、处理和返回。Oracle的优化器根据表的数据量、索引情况、统计信息等因素来决定最佳的执行路径。通过分析执行计划...

    Oracle优化器及执行计划.pdf

    #### 四、Oracle执行计划访问路径 **4.1 表之间的连接** 在多表查询中,连接表的方式会直接影响执行计划: - **嵌套循环连接(Nested Loop Join)**:适用于小表与大表之间的连接。 - **哈希连接(Hash Join)**:...

    ORACLE执行计划和SQL调优.ppt

    ORACLE执行计划和SQL调优 ORACLE执行计划是指数据库管理系统在执行SQL语句时,数据库管理系统如何选择执行计划,以便高效地执行SQL语句。执行计划是指数据库管理系统在执行SQL语句时,选择的访问路径和执行顺序。...

    Oracle 执行计划与查询优化

    Oracle 执行计划是数据库管理系统为了高效执行SQL查询而设计的一种策略。它包含了数据库如何获取、处理和返回数据的详细步骤。理解执行计划对于优化查询性能至关重要,因为通过分析执行计划,我们可以识别出潜在的...

Global site tag (gtag.js) - Google Analytics