db2索引設計準則

2021-08-25 10:52:02 字數 1608 閱讀 8219

首先說一下索引的好處,這幾天做了乙個功能,寫了乙個儲存過程當資料量是4000的時候,竟然跑了30分鐘,加上索引並優化以後,只要了30s多一點,所以索引真的很重要,只要是where條件中用到的字段都是可以用作索引的。還有就是寫sql語句一定要注意演算法,有時演算法的好與壞有非常大的影響。

1. 乙個表如果建有大量索引會影響 insert、update 和 delete 語句的效能,因為在表中的資料更改時,所有索引都須進行適當的調整。另一方面,對於不需要修改資料的查詢(select 語句),大量索引有助於提高效能,因為資料庫有更多的索引可供選擇,以便確定以最快速度訪問資料的最佳方法。

2. 組合索引:組合索引即多列索引,指乙個索引含有多個列。乙個組合索引相當於多個單列索引,如索引(cola, colb, colc)至少相當於(cola)、(cola, colb)、(cola, colb, colc)三個索引。

2. 覆蓋的查詢可以提高效能。覆蓋的查詢是指查詢中所有指定的列都包含在同乙個索引(組合索引)中。例如,如果在乙個表的 a、b 和 c 列上建立了組合索引,則從該表中檢索 a 和 b 列的查詢被視為覆蓋的查詢。建立覆蓋乙個查詢的索引可以提高效能,因為該查詢的所有資料都包含在索引自身當中;檢索資料時只需引用表的索引頁,不必引用資料頁,因而減少了 i/o 總量。儘管給索引新增列以覆蓋查詢可以提高效能,但在索引中額外維護更多的列會產生更新和儲存成本。

3. 對小型表進行索引可能不會產生優化效果,因為資料庫在遍歷索引以搜尋資料時,花費的時間可能會比簡單的表掃瞄還長。

5. 可以在檢視上指定索引。

6. 可以在計算列上指定索引。

7. 避免在索引列上使用is null和is not null。避免在索引中使用任何可以為空的列,資料庫將無法使用該索引。對於單列索引,如果列包含空值,索引中將不存在此記錄;對於復合索引,如果每個列都為空,索引中同樣不存在此記錄. 如果至少有乙個列不為空,則記錄存在於索引中。

8. 如果經常檢索包含大量資料的表中的少於15%的行則需要建立索引。

9. 衡量索引效率的 95/5 規則:如果查詢的結果返回的行數少於表中所有行的5%,則索引是檢索資料的最快方法,如果查詢的結果超過5%,那麼通常使用索引就不是最快的方式。

10.主關鍵字和唯一關鍵字所在的列自動具有索引,但外部關鍵字沒有自動索引。

二、索引的特徵 在確定某一索引適合某一查詢之後,可以自定義最適合具體情況的索引型別。索引特徵包括:

●聚集還是非聚集 ●唯一還是不唯一 ●單列還是多列 ●索引中的列順序為公升序還是降序(索引預設為公升序,但目前多數大型資料庫已經能夠支援反向索引) ●覆蓋還是非覆蓋 ●還可以自定義索引的初始儲存特徵,通過設定填充因子優化其維護,並使用檔案和檔案組自定義其位置以優化效能。 ●位對映索引(bitmap)

索引應該盡量小,使用位元組數小的列建索引好(參照索引的建立),不要對有限的幾個值的字段建單一索引如性別字段

考慮下面的建議來提高索引的效能

1在索引建立或重組時把intra_parallel設為yes

2.定義大的utility堆疊

3盡量把錶和索引放在不同的表空間

4. 及時地更新表和索引的統計資訊

5.必要時,重組索引

6.對於內容快速變化的表,盡量用volatile型別

7.分析 explain取得關於index使用狀況的資訊。對於在查詢中不用的index,刪除它

DB2 索引設計準則

db2 索引設計準則 1.乙個表如果建有大量索引會影響 insert update 和 delete 語句的效能,因為在表中的資料更改時,所有索引都須進行適當的調整。另一方面,對於不需要修改資料的查詢 select 語句 大量索引有助於提高效能,因為資料庫有更多的索引可供選擇,以便確定以最快速度訪問...

DB2 索引整理

create index 語句的pctfree子句指定建立索引時,每個索引頁中要留作空閒空間的百分比。在索引頁上保留更多的空閒空間將導致更小的頁分割,這將減少為重新獲得順序索引頁面而重組表的需要,從而增加預訪問,而預訪問是乙個可以提高效能的重要部件。此外,如果總是存在大關鍵字值,那麼就要考慮降低cr...

DB2效能優化聖經 優化準則

在制定乙個效能優化總體方案時,應當考慮下列準則 1.牢記縮減回報定律 最大的效能收益通常來自最初的努力。以後的修改一般只產生越來越小的效益,並且需要付出更多的努力。2.不要為了優化而優化 優化是為了解除一致的約束。如果優化資源不是引起效能問題的主要原因,那麼除非接觸了主要約束,否則這種優化對響應時間...