【高階統計】索引的設計、使用、維護、修改,你需要知道這些. . .

索引是表中的一個重要的概念,索引是一個與表或檢視相關聯的磁碟結構,可以加快從表或檢視中檢索行的速度,索引是提高檢索資料速度的有效手段。建立表的主鍵和唯一索引的目的除了資料的完整性和一致性外,還具有提高查詢速度的作用。

雖然使用索引能提高查詢速度,但是,建立和使用索引也需要付出代價。這是因為索引需要空間來儲存;需要定期地維護;當紀錄增加或減少時,索引列也需要被修改,索引本身也會被修改。

建立索引需要從以下幾個方面考慮是否建立索引:

對較大的表才建立索引,並且檢索的資料少於總行數的2%到4%。

一個表可建立任意多個索引,但不能太多,否則會增加系統哦個維護的開銷。

經常出現在WHERE子句或聯接條件中的lie列上作為索引關鍵字。

頻繁修改的列不要作為索引列。

對取值較少的關鍵字或表示式,不要採用標準的B+樹索引,可以建立點陣圖索引。

在包含運算子或者函式的WHERE子句中,關鍵字不要作為索引列,如果需要建立索引,可建立函式索引。

索引列上運算子的使用

對索引列的操作語句儘量不使用“非”運算子,如NOT、!=、<>、!>、!<、NOT EXISTS、NOT IN 和NOT LIKE等,這是因為,使用非運算子會造成Oracle對錶執行全表掃描。

唯一索引列上不要使用NULL值

使用UNIQUE關鍵字可以為列新增唯一索引,也就是說,lieder值不允許有重複值,但是,多個NULL值卻可以同時存在,因為Oracle認為兩個空值不相等。

選擇複合索引主列

索引不僅可以建立基於單個列的索引,也可以建立基於多個列的索引。在多個列上建立的索引叫複合索引,複合索引有時比單列索引有更好的效能。如果在建立索引採用多個列作為索引,多個索引列要有先後的順序,順序的不同,會影響索引使用的效率。

避免對大表的全表掃描

在應用程式的設計中,除了一些必要的情況,如月報資料的統計,列印所有清單等需要進行全表掃描外,一般情況下都應該儘量避免對大表進行全表掃描。全表掃描主要是指沒有任何條件或沒有使用任何索引的查詢語句。

監視索引是否被使用

除了主鍵是完整性約束而自動變為索引外,使用者建立的普通索引的目的就是為了提高資料的查詢速度。

相關文章