`
vtyi
  • 浏览: 84347 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

oracle 执行计划3

阅读更多

环境:oracle 817 + linux + 阵列柜

  swd_billdetail 表5000万条数据

  SUPER_USER 表2800条数据

  连接列上都有索引,而且super_user中的一条对应于swd_billdetail表中的很多条记录

  表与索引都做了分析。

  实际应用的查询为:

  select a.CHANNEL, B.user_class

  from swd_billdetail B, SUPER_USER A

  where A.cn = B.cn;

  这样在分析时导致查询出的数据过多,不方便,所以用count(a.CHANNEL||B.user_class)来代替,而且count(a.CHANNEL||B.user_class)操作本身并不占用过多的时间,所以可以接受此种替代。

  利用索引查询出SWD_BILLDETAIL表中所有记录的方法:

SQL> select count(id) from SWD_BILLDETAIL;
COUNT(ID)
----------
  53923574
Elapsed: 00:02:166.00
Execution Plan
----------------------------------------------------------
0      SELECT STATEMENT Optimizer=CHOOSE (Cost=18051 Card=1)
1    0   SORT (AGGREGATE)
2    1     INDEX (FAST FULL SCAN) OF 'SYS_C001851' (UNIQUE) (Cost=18051 Card=54863946)

Statistics
----------------------------------------------------------
          0  recursive calls
       1952  db block gets
     158776  consistent gets
     158779  physical reads
       1004  redo size
        295  bytes sent via SQL*Net to client
        421  bytes received via SQL*Net from client
          2  SQL*Net roundtrips to/from client
          1  sorts (memory)
          0  sorts (disk)
          1  rows processed

利用全表扫描从SWD_BILLDETAIL表中取出全部数据的方法:

SQL> select count(user_class) from swd_billdetail;
COUNT(USER_CLASS)
-----------------
         53923574
Elapsed: 00:11:703.07
Execution Plan
----------------------------------------------------------
0      SELECT STATEMENT Optimizer=CHOOSE (Cost=165412 Card=1 Bytes=2)
1    0   SORT (AGGREGATE)
2    1     TABLE ACCESS (FULL) OF 'SWD_BILLDETAIL' (Cost=165412 Card=54863946 Bytes=109727892)

Statistics
----------------------------------------------------------
          0  recursive calls
       8823  db block gets
    1431070  consistent gets
    1419520  physical reads
          0  redo size
        303  bytes sent via SQL*Net to client
        421  bytes received via SQL*Net from client
          2  SQL*Net roundtrips to/from client
          1  sorts (memory)
          0  sorts (disk)
          1  rows processed


select count(a.CHANNEL||B.user_class)
from  swd_billdetail B, SUPER_USER A
where A.cn = B.cn;
EXEC_ORDER PLANLINE
---------- -----------------------------------------------------------------------------------------------------------
         6   SELECT STATEMENT  OPT_MODE:CHOOSE (COST=108968,CARD=1,BYTES=21)
         5     SORT  (AGGREGATE)  (COST=,CARD=1,BYTES=21)
         4       NESTED LOOPS   (COST=108968,CARD=1213745,BYTES=25488645)
         1         TABLE ACCESS  (FULL) OF 'SWORD.SUPER_USER'  (COST=2,CARD=2794,BYTES=27940)
         3         TABLE ACCESS  (BY INDEX ROWID) OF 'SWORD.SWD_BILLDETAIL'  (COST=39,CARD=54863946,BYTES=603503406)
         2           INDEX  (RANGE SCAN) OF 'SWORD.IDX_DETAIL_CN' (NON-UNIQUE)  (COST=3,CARD=54863946,BYTES=)

  这个查询耗费的时间很长,需要1个多小时。

  运行后的信息如下:

COUNT(A.CHANNEL||B.USER_CLASS)
------------------------------
                       1186387

Elapsed: 01:107:6429.87

Execution Plan
----------------------------------------------------------
   0      SELECT STATEMENT Optimizer=CHOOSE (Cost=108968 Card=1 Bytes=21)
   1    0   SORT (AGGREGATE)
   2    1     NESTED LOOPS (Cost=108968 Card=1213745 Bytes=25488645)
   3    2       TABLE ACCESS (FULL) OF 'SUPER_USER' (Cost=2 Card=2794Bytes=27940)
   4    2       TABLE ACCESS (BY INDEX ROWID) OF 'SWD_BILLDETAIL' (Cost=39 Card=54863946 Bytes=603503406)
   5    4         INDEX (RANGE SCAN) OF 'IDX_DETAIL_CN' (NON-UNIQUE) (Cost=3 Card=54863946)

Statistics
----------------------------------------------------------
          0  recursive calls
          4  db block gets
    1196954  consistent gets
    1165726  physical reads
          0  redo size
        316  bytes sent via SQL*Net to client
        421  bytes received via SQL*Net from client
          2  SQL*Net roundtrips to/from client
          2  sorts (memory)
          0  sorts (disk)
          1  rows processed
分享到:
评论

相关推荐

    oracle 执行计划 详解

    3. 生成 QEP(Query Execution Plan:查询执行计划)。 4. 执行 QEP,返回查询结果。 执行计划的优化方法 为了优化执行计划,我们可以使用绑定变量、减少硬解析、配置 session_cached_cursors、高速缓存游标等方法...

    Oracle执行计划参数解释

    Oracle执行计划参数解释,Oracle SQL优化的基础是看懂Oracle的执行计划,本文当系统整理了Oracle执行计划里面的各种参数。

    oracle执行计划解读

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

    oracle执行计划详解

    oracle 执行计划详解 Oracle 执行计划是数据库性能调整的关键部分,对于想要学习 Oracle 数据库的朋友非常有帮助。下面是Oracle 执行计划的背景知识和重要概念。 共享 SQL 语句 Oracle 将 SQL 语句及解析后得到的...

    Oracle执行计划分析

    ### Oracle执行计划分析 #### 一、概述 在Oracle数据库管理中,优化SQL查询性能是一项至关重要的任务。其中,理解并分析SQL执行计划是提升查询效率的关键步骤之一。执行计划是指Oracle数据库根据特定的SQL语句所...

    Oracle执行计划详解

    Oracle执行计划详解,包括oracle执行顺序和索引详细介绍

    关于Oracle中执行计划稳定性深入研究

    总之,Oracle执行计划的稳定性与数据库性能紧密相关,理解并掌握优化器的工作原理以及如何控制执行计划的选择,是优化数据库性能的关键。在基于代价的优化器模式下,虽然存在执行计划不稳定的可能,但通过合理管理和...

    oracle执行计划建立与阅读

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

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

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

    Oracle 执行计划PPT

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

    Oracle 执行计划、表分区

    3. **执行计划与表分区的关联** - **分区消除**:如果查询只涉及部分分区,优化器可以避免扫描整个表,从而提高效率。 - **分区并行执行**:Oracle允许在不同分区上并行执行查询,进一步提升处理大量数据的速度。 ...

    oracle执行计划文档

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

    oracle怎么查看执行计划

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

    Oracle解释计划 执行计划

    为了确保SQL语句能够高效执行,理解Oracle解释计划和执行计划对于数据库管理员和开发人员来说至关重要。Oracle解释计划是指Oracle在执行SQL语句之前所生成的计划,它详细描述了数据库如何检索数据以及执行相关操作的...

    怎样看懂Oracle的执行计划

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

    ORACLE的执行计划详解文档

    本文档详细解释了 ORACLE 的执行计划背景知识,包括共享 SQL 语句、执行计划的存储和共享、绑定变量的使用、执行计划的生成和共享、执行计划的优化等方面的内容。 一、共享 SQL 语句 ORACLE 对相同的 SQL 语句进行...

    oracle执行计划详细解释

    oracle执行计划详细解释

    ORACLE执行计划和SQL调优.pptx

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

Global site tag (gtag.js) - Google Analytics