我是FE,也是Fe

          前端來源于不斷的點滴積累。我一直在努力。

          統計

          留言簿(15)

          閱讀排行榜

          評論排行榜

          Oracle索引,真的用上了么?

          最近發現了一個Oracle索引的小細節。

          如果索引是建立在多個列上, 只有在它的第一個列(leading column)被where子句引用時,優化器才會選擇使用該索引。

          這也是一條簡單而重要的規則。見以下實例。

          SQL> create table multiindexusage ( inda number , indb number , descr varchar2(10));

          Table created。

          SQL> create index multindex on multiindexusage(inda,indb);

          Index created。

          SQL> set autotrace traceonly

          SQL> select * from multiindexusage where inda = 1;

          Execution Plan

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

          0 SELECT STATEMENT Optimizer=CHOOSE

          1 0 TABLE ACCESS (BY INDEX ROWID) OF 'MULTIINDEXUSAGE'

          2 1 INDEX (RANGE SCAN) OF 'MULTINDEX' (NON-UNIQUE)

          (只使用索引的第一個字段查詢,可以利用索引)

          SQL> select * from multiindexusage where indb = 1;

          Execution Plan

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

          0 SELECT STATEMENT Optimizer=CHOOSE

          1 0 TABLE ACCESS (FULL) OF 'MULTIINDEXUSAGE'

          (只使用索引的第二個字段查詢,將不會利用索引)

          很明顯, 當僅引用索引的第二個列時,優化器使用了全表掃描而忽略了索引。

          posted on 2010-01-09 11:12 衡鋒 閱讀(341) 評論(0)  編輯  收藏 所屬分類: Oracle


          只有注冊用戶登錄后才能發表評論。


          網站導航:
          博客園   IT新聞   Chat2DB   C++博客   博問  
           
          主站蜘蛛池模板: 苏州市| 华安县| 大竹县| 图们市| 柯坪县| 德令哈市| 盱眙县| 常山县| 恩施市| 梓潼县| 东兴市| 宜良县| 沈丘县| 东至县| 桦南县| 怀柔区| 拉孜县| 深圳市| 枣庄市| 岗巴县| 新沂市| 新龙县| 辽阳县| 青岛市| 旬邑县| 赞皇县| 桦南县| 宝丰县| 化州市| 大新县| 简阳市| 南木林县| 清水县| 尉犁县| 陇川县| 纳雍县| 麻城市| 吉林市| 蒙城县| 景宁| 东兴市|