熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> Oracle >> 正文

深入了解數據倉庫優化中的星型轉換

2013-11-13 16:14:59  來源: Oracle 

  在數據倉庫中經常查詢的SQL總帶有下列特征:

  ◆幾個表進行關聯

  ◆只有一個數據量巨大的表 稱為事實表

  ◆其他的都是編碼表 稱為維表

  ◆維表和事實表之間有主外鍵關系

  假設有D(key)D(key)D(key)D(key)四個小的維表和一個事實表F(keykeykeykey) 那麼經常進行的查詢將是:           SELECT
          Dxxx Dxxx Dxxx Dxxx
          SUM(Fxxx) SUM(Fxxx)
          FROM F D D D D
        WHERE FKEY=DKEY AND FKEY=DKEY
          AND FKEY=DKEY AND FKEY=DKEY
          AND Dxxx=? AND Dxxx=?
          AND Dxxx=? AND Dxxx=?
        GROUP BY Dxxx Dxxx Dxxx Dxxx

  而為了提高查詢速度 根據數據特征 keykeykeykey這四個字段會比較每個字段上建一個位圖索引(Bitmap Index) 但是上面的查詢語句並不能用到位圖索引 除非是進行了星型轉換 這個轉換需要將SQL轉換成下面的格式:          SELECT
          Dxxx Dxxx Dxxx Dxxx
          SUM(Fxxx) SUM(Fxxx)
          FROM F D D D D
        WHERE FKEY=DKEY AND FKEY=DKEY
          AND FKEY=DKEY AND FKEY=DKEY
          AND Dxxx=? AND Dxxx=?
          AND Dxxx=? AND Dxxx=?
          AND FKEY IN (SELECT DKEY FROM D WHERE Dxxx=?)
          AND FKEY IN (SELECT DKEY FROM D WHERE Dxxx=?)
          AND FKEY IN (SELECT DKEY FROM D WHERE Dxxx=?)
          AND FKEY IN (SELECT DKEY FROM D WHERE Dxxx=?) GROUP BY Dxxx Dxxx Dxxx Dxxx

  有條件的可以試試 使用星型轉換有三個條件:

  ◆事實表的每個代碼列上有位圖索引

  ◆參數STAR_TRANSFORMATION_ENABLED的值要設為TRUE

  ◆必須使用CBO 所以最好對表進行適當的分析


From:http://tw.wingwit.com/Article/program/Oracle/201311/18029.html
  • 上一篇文章:

  • 下一篇文章:
  • 推薦文章
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.