ITPub博客

首页 > Linux操作系统 > Linux操作系统 > 组合索引位置的使用测试

组合索引位置的使用测试

原创 Linux操作系统 作者:wzq609 时间:2013-06-24 16:22:21 0 删除 编辑

本文档记录组合索引的顺序跟相应组合索引的顺序的测试结果,目的是如何在实际的工作中如何有效的使用组合索引;

1.1  测试环境

数据库版本:oracle 11.0.2.3

表:BKPF


索引:BKPF~1

测试语句:

SELECT /*+ INDEX(BKPF "BKPF~1") */ 

BELNR XM_BELNR, BUDAT XM_BUDAT, BUKRS XM_BUKRS, GJAHR XM_GJAHR,XBLNR GF_VBELN

FROM SAPSR3.BKPF

WHERE XBLNR IN ('20120701001','0090000449','20120701001','0090000482','0090000484' )  AND MANDT='210' AND BLART IN ('WL','SA' );

 

1.2  测试前思考

索引BKPF~1的列MANDT只有一个唯一值,弱选择性;

                           XBLNR1886列,具有很强的选择性;

目前XBLNR列在组合索引的最后一个位置,按照索引的组成原理,强选择性的列位于组合索引的前面位置,应该有更好的性能;

2  测试的步骤

a)  原有索引BKPF~1,各项的位置如下:MANDTBSTATBUKRSXBLNR,查看执行计划;

b)  重建索引BKPF~1,各项的位置如下:XBLNRMANDTBSTATBUKRS,查看执行计划;

 

2.1  原有的索引上执行sql语句

Execution Plan

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

Plan hash value: 3435912789

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

| Id  | Operation                   | Name   | Rows  | Bytes | Cost (%CPU)| Time    |

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

|   0 | SELECT STATEMENT            |        |     4 |   172 |   113   (1)| 00:00:02 |

|*  1 |  TABLE ACCESS BY INDEX ROWID| BKPF   |     4 |   172 |   113   (1)| 00:00:02 |

|*  2 |   INDEX RANGE SCAN          | BKPF~1 |    51 |       |    97   (2)| 00:00:02 |

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

Predicate Information (identified by operation id):

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

   1 - filter("BLART"='SA' OR "BLART"='WL')

   2 - access("MANDT"='210')

       filter("XBLNR"='0090000449' OR "XBLNR"='0090000482' OR

              "XBLNR"='0090000484' OR "XBLNR"='20120701001')

Statistics

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

          1  recursive calls

          0  db block gets

        141  consistent gets

         95  physical reads

          0  redo size

       2093  bytes sent via SQL*Net to client

        541  bytes received via SQL*Net from client

          4  SQL*Net roundtrips to/from client

          0  sorts (memory)

          0  sorts (disk)

         42  rows processed

说明:

1、选择索引的条件是MANDT,然后对索引进行过滤操作;

           2、预计运行时间是2s(这个时间经过四舍五入的操作,最低1s,不是很准确)

           3、该操作有141个一致读;


2.2  重建后的索引执行SQL语句

Execution Plan

Plan hash value: 3225880221

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

| Id  | Operation                    | Name   | Rows  | Bytes | Cost (%CPU)| Time     |

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

|   0 | SELECT STATEMENT             |        |     4 |   172 |    20   (0)| 00:00:01 |

|   1 |  INLIST ITERATOR             |        |       |       |            |          |

|*  2 |   TABLE ACCESS BY INDEX ROWID| BKPF   |     4 |   172 |    20   (0)| 00:00:01 |

|*  3 |    INDEX RANGE SCAN          | BKPF~1 |    51 |       |     5   (0)| 00:00:01 |

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

Predicate Information (identified by operation id):

   2 - filter(("BLART"='SA' OR "BLART"='WL') AND "MANDT"='210')

   3 - access("XBLNR"='0090000449' OR "XBLNR"='0090000482' OR

              "XBLNR"='0090000484' OR "XBLNR"='20120701001')

Statistics

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

          1  recursive calls

          0  db block gets

         53  consistent gets

          0  physical reads

          0  redo size

       2093  bytes sent via SQL*Net to client

        541  bytes received via SQL*Net from client

          4  SQL*Net roundtrips to/from client

          0  sorts (memory)

          0  sorts (disk)

         42  rows processed

说明:

1、选择索引的条件是XBLNR,然后对索引进行过滤操作;

           2、预计运行时间是1s

3、  该操作有53个一致读;

 

3  总结

a)       组合索引的创建:在特定的情况下开发会对经常使用的sql语句的条件创建索引,如果这些条件会经常一起出现,那么这些条件创建一个组合索引可以得到很好的性能;

b)       其他的sql语句也有可能会用到这个索引,这个时候如果把强选择性的列放在索引的前端,那么可以得到更好的性能;

Normal 0 false 7.8 磅 0 2 false false false EN-US ZH-CN X-NONE

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/12679300/viewspace-764688/,如需转载,请注明出处,否则将追究法律责任。

上一篇: 物化视图
下一篇: 信春哥、系统稳、闭眼上线不回滚
请登录后发表评论 登录
全部评论

注册时间:2013-06-16

最新文章