ALTER TABLE "XXXX"."tableA" PCTFREE 20 ;
CREATE INDEX "schema"."XXXX_INDEX" ON "XXX"."TABLE"
("columnA" ASC)
COMPRESS YES
INCLUDE NULL KEYS ALLOW REVERSE SCANS ;
PCTFREE : pctfree 標示要留多少空間,一般默認參數是20,表示留20%
即當塊里的數據達到80%里,就不會往這個塊里寫新數據.pctfree 20 --塊保留20%的空間留給更新該塊數據使用
compress YES : 當我們的系統中數據量很大,IO 需求超過了磁盤系統提供的容量(即 IO 成為系統的瓶頸)時,行壓縮技術能夠有效的減少讀寫磁盤的次數。
DB2 9.7 更進一步提出了索引壓縮技術,減少索引磁盤空間的占用,減少讀取索引時的 IO 次數從而提高了性能.
ALLOW REVERSE SCANS: 盡管當在 CREATE INDEX 語句中指定了 ALLOW REVERSE SCANS 參數時可以按逆向方向搜索值,但是,執行按指定索引順序的掃描比執行逆向掃描稍微更快一些。這是DB2 V8的規定,DB2 V9默認情況下就是ALLOW REVERSE SCANS
INCLUDE NULL KEYS : 可以給空值建索引。
聚簇索引: DB2可以建立聚簇索引。
DB2索引實現是一個B+樹。
創建索引的目的還有一個就是保證數據唯一性,可以利用”CREATE UNIQUE INDEX <INDEX_NAME> ON <TABLENAME> (<COLNAME>)”,來完成。
主鍵會隱式創建索引,所以請不要在主鍵上創建索引浪費空間。
具有大量重復數據的列上不要創建索引。在大量重復的列上創建索引沒有任何意義。如下數據結構:表中字段col1有大量重復數據,其中的數據分布是按照90%的Y,和10%的N來分布。
這樣的列上創建索引沒有任何意義。在查詢條件為col1=‘Y’時,該表的索引掃描和表掃描沒有特大差異。根據實踐經驗,列上的數據分布應該均勻,並且抽密度不能大於5 ‰。