`
sjk2013
  • 浏览: 2166497 次
文章分类
社区版块
存档分类
最新评论

oracle sql优化案例1(使用组合索引)

 
阅读更多

Bad sql

SELECT T3.CONFLICT_ID,

T3.LAST_UPD,

T3.CREATED,

T3.LAST_UPD_BY,

T3.CREATED_BY,

T3.MODIFICATION_NUM,

T3.ROW_ID,

T3.ATTR_04,

T3.ATTR_03,

T2.VAL,

T3.ATTR_01,

T3.ATTR_02,

T1.NAME,

T2.VAL1

FROM user.S_ORG_EXT T1, user.CX_LOOKUP T2, user.CX_POS_LOG_INFOT3

WHERE T3.ATTR_02 = T1.PAR_ROW_ID

AND T3.ATTR_01 = T2.NAME1

AND T2.TYPE = 'PROVIDER'

AND (T3.TYPE = 'INFO')

AND (T3.ATTR_04 = :1 AND T3.ATTR_02 = :2)

原因分析:对CX_POS_LOG_INFO表全表扫描,其实统计信息也不准确,表的大小应该500M左右了

--------------------------------------------------------------------------------

| Operation | PHV/Object Name |Rows | Bytes| Cost |

--------------------------------------------------------------------------------

|SELECT STATEMENT |----- 1762745057 ----| || 3655 |

|NESTED LOOPS | | 1 |1K| 3655 |

| NESTED LOOPS | | 1 |109 | 2 |

| TABLE ACCESS BY INDEX ROWID |S_ORG_EXT | 1 |25 | 1 |

| INDEX UNIQUE SCAN |S_ORG_EXT_U3 |1 | | 2 |

| TABLE ACCESS BY INDEX ROWID |CX_LOOKUP | 1 |84 | 1 |

| INDEX RANGE SCAN |CX_LOOKUP_U1 |1 | | 2 |

| TABLE ACCESS FULL |CX_POS_LOG_INFO |1 | 1K| 3653 |

--------------------------------------------------------------------------------

Statistics

----------------------------------------------------------

1recursive calls

0db block gets

71207consistent gets

71187physical reads

0redo size

1131bytes sent via SQL*Net to client

460bytes received via SQL*Net from client

1SQL*Net roundtrips to/from client

0sorts (memory)

0sorts (disk)

0rows processed

解决思路:

手工添加组合索引,使查询走组合索引,查询从65秒下降到1秒,逻辑读从71207(556M)下降到21

create indexSIEBEL.IDX_CX_POS_LOG_INFO_U1 on SIEBEL.CX_POS_LOG_INFO (ATTR_02, ATTR_04)

tablespace SIEB_IDX

Execution Plan

----------------------------------------------------------

0SELECT STATEMENT Optimizer=CHOOSE (Cost=3 Card=1 Bytes=1278)

10 TABLE ACCESS (BY INDEX ROWID)OF 'CX_POS_LOG_INFO' (Cost=1 Card=1 Bytes=1169)

21 NESTED LOOPS (Cost=3 Card=1Bytes=1278)

32 NESTED LOOPS (Cost=2Card=1 Bytes=109)

43 TABLE ACCESS (BY INDEXROWID) OF 'S_ORG_EXT' (Cost=1 Card=1Bytes=25)

54 INDEX (UNIQUE SCAN) OF'S_ORG_EXT_U3' (UNIQUE) (Cost=2 Card=1)

63 TABLE ACCESS (BY INDEXROWID) OF 'CX_LOOKUP' (Cost=1 Card=1Bytes=84)

76 INDEX (RANGE SCAN) OF'CX_LOOKUP_U1' (UNIQUE) (Cost=2 Card=1)

82 INDEX (RANGE SCAN) OF'IDX_CX_POS_LOG_INFO_U1' (NON-UNIQUE)(Cost=1 Card=93)

Statistics

----------------------------------------------------------

0recursive calls

0db block gets

18consistent gets

0physical reads

0redo size

1448bytes sent via SQL*Net to client

655bytes received via SQL*Net from client

2SQL*Net roundtrips to/from client

0sorts (memory)

0sorts (disk)

1rows processed


分享到:
评论

相关推荐

    收获不止SQL优化

    第1章 全局在胸——用工具对SQL整体优化 1 1.1 都有哪些性能工具 1 1.1.1 不同调优场景分析 2 1.1.2 不同场景对应工具 2 1.2 整体性能工具的要点 4 1.2.1 五大性能报告的获取 5 1.2.2 五大报告关注的要点 10 ...

    oracle学习文档 笔记 全面 深刻 详细 通俗易懂 doc word格式 清晰 连接字符串

    其一、就业面广:全球前100强企业99家都在使用ORACLE相关技术,中国政府机构,大中型企事业单位都能有ORACLE技术的工程师岗位。 其二、技术层次深:如果期望进入IT服务或者产品公司(类似毕博、DELL、IBM等),...

    经典SQL语句大全

    1、1=1,1=2的使用,在SQL语句组合时用的较多 “where 1=1” 是表示选择全部 “where 1=2”全部不选, 如: if @strWhere !='' begin set @strSQL = 'select count(*) as Total from [' + @tblName + '] where ' + ...

    收获不知Oracle

    5.2.1.9 组合索引高效设计要领272 5.2.1.10变换角度看索引的危害289 5.2.1.11如何合理控制索引数量295 5.2.2 位图索引的玫瑰花之刺 297 5.2.2.1 统计条数奋勇夺冠297 5.2.2.2 即席查询一骑绝尘302 5.2.2.3 遭遇更新...

    SQL数据库修复软件

    数据库急救成立以来,一直从事各种主流数据库的修复及恢复工作,其中包括 MS SQL,MYSQL,Oracle,Access,Sybase,IBMDB2等20余种数据库。 国内目前最专业的数据库救援站,长期修复研究各数据库的物理结构及逻辑...

    Oracle创建视图(View)

    视图基于的表称为基表,Oracle的数据库对象分为五种:表,视图,序列,索引和同义词。 视图是存储在数据字典里的一条select语句。通过创建视图可以提取数据的逻辑上的集合或组合。 视图的优点: 1.对数据库的...

    sql经典语句一部分

    1、1=1,1=2的使用,在SQL语句组合时用的较多 “where 1=1” 是表示选择全部 “where 1=2”全部不选, 如: if @strWhere !='' begin set @strSQL = 'select count(*) as Total from [' + @tblName + '] where ' + ...

    数据库操作语句大全(sql)

    1、1=1,1=2的使用,在SQL语句组合时用的较多 “where 1=1” 是表示选择全部 “where 1=2”全部不选, 如: if @strWhere !='' begin set @strSQL = 'select count(*) as Total from [' + @tblName + '] where ' +...

    asp.net知识库

    将 ASP.NET 2.0 应用程序服务配置为使用 SQL Server 2000 或 SQL Server 2005 ASP.NET 2.0 中的数据源控件 使用 ASP.NET 2.0 ObjectDataSource 控件 ASP.NET 2.0 的内部变化 使用SQL Cache Dependency 代替 ...

    亮剑.NET深入体验与实战精要2

    13.6.1 优先使用(对象)组合,而非(类)继承 478 13.6.2 针对接口编程,而非(接口的)实现 481 13.6.3 开放-封闭法则(OCP) 482 13.6.4 Liskov替换法则(LSP) 485 13.6.5 单一职责原则(SRP) 486 13.6.6 依赖...

    亮剑.NET深入体验与实战精要3

    13.6.1 优先使用(对象)组合,而非(类)继承 478 13.6.2 针对接口编程,而非(接口的)实现 481 13.6.3 开放-封闭法则(OCP) 482 13.6.4 Liskov替换法则(LSP) 485 13.6.5 单一职责原则(SRP) 486 13.6.6 依赖...

Global site tag (gtag.js) - Google Analytics