郑保卫 - 索引优化策略及实战

所需积分/C币:10 2015-11-26 16:30:25 20.34MB PDF

2015 Oracle 技术嘉年华(OTN)分会场2郑保卫 - 索引优化策略及实战
Data Driven World 不同类型表中索引的应用准则 ①拥有少量数据的小型表 存储表中数据所使用的数据块的个数小于DB_ FILE MULT| BLOCK READ COUNT 全表扫描的情况下在一次的O中可以将所有的数据库读入到内存中 尤其在表连接中作为内侧循环被执行时,即使是非常小的表如没有索引也会对执行速度产生很大的影响 ②主要起参考( Referenced)作用的中大型表 由事物处理的行为主体、对象等实体所构成的表(例如:主要“顾客” 其特征为:数据量很少增加,主要以查询为主,查询类型固定,有必要创建适合与读取类型的索引 ③管理具体业务行为的中大型表 与“销售信息”相类似的负责存储具体业务行为内容的事物处理表 最少的索引数,满足最多的读取类型,需要顾及当前正在使用的索引类型和未来可能会出现的索引类型来 构建战略性的索引。 ④以存储Log日志数据)为目的的大型表 以管理日志数据为目的的表 由于存储优先,几乎不需要修改,可以考虑不设计主键 如需要识别符,则可以创建 UNIQUE|NDEX或考虑使用分区 3 CONTENTS I.索引使用原则 Ⅱ.影响索引设计的要素及设计原则 Ⅲ.战略索引设计方法及技术 ⅣV.战略索引设计实战案例分享 Data Driven World 单列索引与组合索引比较 组合索引与多个单一列索引合并后的存储容量相似,组合索引比较有, 但灵活性不好。 SELECT★ 如为列赋予了使用“=”,则效果始终比较好。 FROM七ab1 如未使用“=”,则实用性会随着列顺序的不同而降低。 WHERE CO11 ABC 单身 AND col2 = 123; 各有其优缺点 结合 灵活性 成本低 INDEX MERGE 版成本高 速度快 CONCATENATEDINDEX Coll Rowid Col2 Rowid Rowid coll col2 coll col2 rowid ABb 10 12034 ABb 55 10 ABc 15 1237 ABC 67 15 ABC 26 ②1239 Abc 89 26 ABC 28 12312 1‖ABC10028 ABC 324 12332 ABC123132 ABC 67 12346 ABC18067 BCA 12 12352 BCA10012 BCA 27 12356 BCA10027 6) BCA 48 12362 32ABC123 BCA12348 BCa 85 12364 BCA 8585 CBA 35 12368 CBA12335 CBA 49 12375 CBA12349 CBA 64 12399 CBA21464 CBa 99 32148 CBA21499 INDEⅩ1 INDEⅩ2 TABI INDEX3 (COL 1+ COL2) 与索引合并所获得的结果相同 Data Driven World 离散度与索引组合顺序的相关关系 SELEC★ 4种 froM tab 1 1000种 WHERE CO11 ·如使用的全是“”查询条件,则与离散度无关,处理量相同 ANco12=114; ·即,运算符比高散度更重要 I NDE1: COL1+COL2 INDE: COL2+ COLI SORT SORT COL1 COL2 ROWID CoL2 CoL1 ROWID A 111 11 113 A 23 A I 112 5 113 54 A 112 18 113 B 67 113 123 113 B 34 A 113 54 113 39 A 114 25 113 42 A(3 114 129 113 D 67 Table A 115 26 113 D 183 access 2 A 115 114 A 25 工fcO2>114 iA11116 114 A 29 Table A 114 B 52 access B 41 14 B 工FcOI1>A′ B 111 45 「11141 B 112 65 115 A1126 6 Data Driven World 运算符与索引组合顺序的相关关系 SELECT x ●因为在列COL2的值为113~114的范围中没有对列coL1 FROM七ab1 的值进行排序,所以在扫描过程中无法中止 HERE CO11=、A′ 即,如先行列所使用的不是←”运算符,则后面的列起 AND CO12 BETWEEN 113 AND 114 到的只是过滤作用. I NDE1: COL1+COL2 INDE: COL2+ COLI COL1 COL2 ROWID CoL2 COL1 ROWID NO SORT A (2 111 11 113 23 Table A1112 5 113 A 54 access A 112 18 113 B 67 X A 113 23 113 B 34 工ECO1<>A 1131154 113 39 X 3 1114 25 113c 42 X 114 29 113 D 67 X Table 115 26 113 D 83 X access A1115 1141 A 25 工fcO2>114 iA11116 114 A 29 A 1114B152 B 41 114 B 64 B 45 114 X B 112 65 115 A11261 工fcOT2>114 7 Data Driven World S编写与索引使用的关系 A SELECT FROM TAB1 SELECT FROM TAB1 WHERE COL1 =A W/ HERE COL1=“A AND COL2 BETWEEN 111 AND 112 AND COL2|N(111,112) BWBN意味着 N意味着点() 线段(范国) COL2 COL1 ROWID COL2 COL1 ROWID 110 A 10 110 10 110 B 41 110 41 111 A 111 11 111 B 6 COL2 =A 111 ABABC 65 coL1=111 111 96 111 96 111 D 5 111 D 5 对足co查询 112 A 73 112 A 73 条件的全部范围 进行扫描 112 B 18 COLBA 112 B 18 112c COLI =112 45 112 45 113 22 113 A 22 由于有可能存在111001, 优化器能够将其分解为两个 所以无法进行SKP扫描 使用“”的查湖条件 TABLE ACCESS (BY ROWID) OF TAB1' 工 NLIST工 ERATOR INDEX (RANGE SCAN)OF PK TAB1 TABLE ACCESS (BY ROWID)OF TAB1 工 NDEX( UNIQUE SCAN)OF、 PK TAB1′ (8 Data Driven World SQL编写与索引的关系 INDEX OF SALES PROD DEPTCD SELEC SALEDATE PRINTER 1110 20110301 FROM SALES 索引中没使用第二个列 DEPTCD PRINTER 111020110302 WHERE PROD PRINTER PR工NyR 1110 20110303 AND SALEDATE =20110326 PRINTER 111020110304 PRINER 1110 20110326 TABLE ACCESS (BY ROWID)OF SALES TABLE ACCESS (BY ROWID) OF SALES Table PRINTER 1120 20110301 access INDEX (RANGE SCAN) OF PK SALES INDEX ( SKIP SCAN) OF PK SALES' PRINTER 1120 20110302 PR工NyR 1120 20110303 PR工NyR 1120 20110323 SELECT PRINER 1120 20110324 FROM SALES 虽然为 DEPTCD赋予了查询条件,但 PRINTER 1120 20110325 由于使用的并非是””,因此无法执 W王 ERE PROD PR工NER′ 行SKP扫描 PRINER 1120 20110326 Table AND DEPTCD1ike号′ 丰丰车丰丰: access AND SALEDATE E 20110326 PRINER 9120 20110301 PRINTER 9120 20110302 PRINTER 912020110303 SELECT PR工NyR 9120 20110304 FROM SALES ·· 在子查询中由于使用了列 DEPTCD, PRINTER 9120 20110326 WHERE PROD=“ PRINTER 因此可以执行SKTP扫描 Table ROU ER 1120 20110301 AND DEPTCD IN (SELECT DEPTCD access ROUTER 1120 20110302 FROM DEPT) AND SALEDATE =20110326' ROU TER 1120 20110303 (9) Data Driven World 索引列选择与索引效果的关系 Random C1 C2 ROWID Access增加 SELEC★ 12010 11.200 FRoM tab1 23011 34,,400 HERE C1 2 AND C3 =400 23057 24034 57∴300 24058 58,,500 4076 76..600 35021 NDE×1(c1+C2) TAB1 索引中的查询范围与 结果相同! Rando C1 C2 C3 ROWID Aces减少 12010010 11.200 23020011 34∴.400. 23030057 24040034 57∴300 主战球员 侯补球员 X 24050058 58∴500∴ X 24060076 76∴600 ■■■ 5050021 INDEX2( C1+C2+C3) TAB1 10

...展开详情
img
-空白式

关注 私信 TA的资源

上传资源赚积分,得勋章
最新资源