什么是索引?
提起索引,應該不會感到陌生,若說它就是目錄,大概都知道了,數據庫的索引與書的目錄很相似,都叫index.書的內容相當于數據庫表中的數據,書的目錄通過頁碼指向書的內容,同樣,索引也記錄了表中的關鍵值,提供了指向表中行的指針.書的目錄使讀者很快的找到想看的內容,而不必翻看書的每一頁,索引使得數據庫應用程序能夠不掃描全表而找到想要的數據.
索引是不是多多益善?
索引可以創建在一列或多列的組合上,也可以在數據庫表的多個列上建立不同的索引,但這些列應該是經常作為查詢條件的列.需要指出的是,并不是表上的索引越多越好,在數據庫設計過程中,還是需要為表選擇一些合適的索引。寧缺勿爛,這是建立索引時的一個具體選擇。在理論上,雖然一個表可以設置無限的索引,但表中的索引越多,維護索引所需要的開銷也就越大。每當數據表中記錄有增加、刪除、更新變化的時候,數據庫系統都需要對所有索引進行更新。
索引的分類
索引可以分為三類:聚集索引(clustered index),非聚集索引,唯一性索引(unique index).根據索引字段組成又有復合索引的說法,復合索引可以是唯一索引也可以不是唯一索引.一個表上最多創建一個聚集索引和249個非聚集索引.
創建索引的條件
(1)為經常出現在關鍵字orderby、group by、distinct后面的字段,建立索引。
(2)在union等集合操作的結果集字段上,建立索引。
(3)為經常用作查詢選擇的字段,建立索引。
(4)在經常用作表連接的屬性上,建立索引。
(5)考慮使用索引覆蓋。對數據很少被更新的表,如果用戶經常只查詢其中的幾個字段,可以考慮在這幾個字段上建立索引,從而將表的掃描改變為索引的掃描。
創建索引的限制
(1)限制索引數目。
(2)唯一性太差的字段不適合單獨創建索引;
(3)更新頻繁的字段不適合創建索引;
(4)不會做為查詢條件的字段不創建索引