阿強
Lv 7
阿強 發問時間: 電腦與網際網路軟體 · 1 0 年前

有關Oracle的Index建立標準?

請問在Oracle中建立Index有無一定的評估標準?

例如:

1.資料筆數要超過多少才建立Inde會比較有效益?

2.資料欄位數量多是否建立多個Index比較好?

3.同一資料欄位,存放資料量少跟存放資料量多,若建立成Index,是否有差別?(也就是有一個欄位為column,若該cloumn存10個字元下做Index,與該欄位存100個字元下做Index,效能上有無差別?

1 個解答

評分
  • 1 0 年前
    最佳解答

    1.我會以1000筆為基準,少於1000筆,建立INDEX ,所得到的差異不大。

    2.是否要建立INDEX要視你的應用程式而定,沒用到的INDEX只會浪費資源,要以你所執行SQL條件(WHERE),排序(ORDER),以那些欄位做為INDEX的KEY值,才會對效能有幫助。

    3.資料欄位大小對於建立INDEX的影響,可分為二部份,

      (1)該資料欄位非INDEX的KEY,執行full table scan會有影響,因為資料量大,但index scan則沒影響。

    (2)若資料欄位為INDEX的KEY則有影響

    例如:資料庫的BLOCK為2048,有一個TABLE資料筆數為2000筆,

    若INDEX的鍵值大小為10bytes,則每個BLOCK可以放2048/10=200筆(忽略每筆ROWID大小),INDEX Btree level大概一層。

    若INDEX的鍵值為200bytes,則每個BLOCK只能放10筆,約佔用13個BLOCK, INDEX Btree level大概會有3層,

    就以index scan來說鍵值10byte只要找1個block,但建值100則要找3個block

    參考資料: 自己實務經營
還有問題?馬上發問,尋求解答。