深入理解Oracle索引(17):Cost 值相同 CBO 對索引的選擇

來源:互聯網
上載者:User

     規則如下:

                     

     測試如下:

hr@ORCL> drop table t purge;Table dropped.  hr@ORCL> create table t as select * from dba_objects;Table created.hr@ORCL> alter table t add (object_id_1 number);Table altered.hr@ORCL> update t set object_id_1=object_id;50363 rows updated.hr@ORCL> commit;Commit complete.hr@ORCL> create index idx_t_a on t(object_id);Index created.hr@ORCL> create index idx_t_b on t(object_id_1);Index created./* 統計資訊相同、意味著同類型執行計畫的Cost值會相同*/hr@ORCL> exec dbms_stats.gather_table_stats(ownname=>'HR',tabname=>'T',estimate_percent=>100,cascade=>TRUE,no_invalidate=>false);PL/SQL procedure successfully completed./* 葉子塊數量相同、CBO按字母順序在前走索引*/hr@ORCL> select index_name,leaf_blocks from user_indexes where table_name='T' and index_name in ('IDX_T_A','IDX_T_B');INDEX_NAME                     LEAF_BLOCKS------------------------------ -----------IDX_T_A                                111IDX_T_B                                111hr@ORCL> set autot trace exphr@ORCL> select * from t where object_id=1000 and object_id_1=1000;Execution Plan----------------------------------------------------------Plan hash value: 1194865126---------------------------------------------------------------------------------------| Id  | Operation                   | Name    | Rows  | Bytes | Cost (%CPU)| Time     |---------------------------------------------------------------------------------------|   0 | SELECT STATEMENT            |         |     1 |    98 |     2   (0)| 00:00:01 ||*  1 |  TABLE ACCESS BY INDEX ROWID| T       |     1 |    98 |     2   (0)| 00:00:01 ||*  2 |   INDEX RANGE SCAN          | IDX_T_A |     1 |       |     1   (0)| 00:00:01 |---------------------------------------------------------------------------------------Predicate Information (identified by operation id):---------------------------------------------------   1 - filter("OBJECT_ID_1"=1000)   2 - access("OBJECT_ID"=1000)/* 把idx_t_b葉子塊數量從111改為110*/hr@ORCL> set autot offhr@ORCL> exec dbms_stats.set_index_stats(ownname=>'HR',indname=>'IDX_T_B',numlblks=>110);PL/SQL procedure successfully completed.hr@ORCL> select index_name,leaf_blocks from user_indexes where table_name='T' and index_name in ('IDX_T_A','IDX_T_B');INDEX_NAME                     LEAF_BLOCKS------------------------------ -----------IDX_T_A                                111IDX_T_B                                110/* Cost 值相同、CBO  選擇葉子塊數量較少的索引*/hr@ORCL> set autot trace exphr@ORCL> select * from t where object_id=1000 and object_id_1=1000;Execution Plan----------------------------------------------------------Plan hash value: 3073359464---------------------------------------------------------------------------------------| Id  | Operation                   | Name    | Rows  | Bytes | Cost (%CPU)| Time     |---------------------------------------------------------------------------------------|   0 | SELECT STATEMENT            |         |     1 |    98 |     2   (0)| 00:00:01 ||*  1 |  TABLE ACCESS BY INDEX ROWID| T       |     1 |    98 |     2   (0)| 00:00:01 ||*  2 |   INDEX RANGE SCAN          | IDX_T_B |     1 |       |     1   (0)| 00:00:01 |---------------------------------------------------------------------------------------Predicate Information (identified by operation id):---------------------------------------------------   1 - filter("OBJECT_ID"=1000)   2 - access("OBJECT_ID_1"=1000)

                    By David Lin 
                    20113-06-05 
                    Good Luck

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.