索引紀錄了所索引列在數據庫表中的物理存儲位置,實現了表中數據的邏輯排序。使用索引可以加快數據查詢速度、減少系統響應時間、可以使表和表之間的連接速度加快。
但是,索引的亂用可能達不到預期的效果,反而給數據庫增加了負擔,下面介紹一些定義索引的基本原則:
1、定義索引需要付出一定代價,使用時需要權衡利弊
創建索引和維護索引都需要花費時間與精力。當建有索引的表中的紀錄又增加、刪除、修改操作時,數據庫要對索引進行重新調整,需要消耗服務器的資源。當表中的數據越多,這個消耗的資源也就越多。每個索引都會占用一定的物理空間。若索引多了,不但會占用大量的物理空間,而且,也會影響到整個數據庫的運行性能。因此,建立索引時,需要在得與失之間進行權衡。
2、不要對查詢中很少涉及的列或者重復比較多的列建立索引
在這樣的字段上建立索引,不能提高查詢速度,反而增加了系統維護時間和占用了系統空間,會降低數據庫的整體性能。
3、對于按范圍查詢的列要盡量建立索引
對于需要在指定范圍內快速或者頻繁查詢的數據列,需要為其建立索引。因為索引已經排序,其保存的時候指定的范圍是連續的,查詢可以利用索引的排序,加快查詢時間,減少用戶等待時間。
若雖然可能需要按范圍來進行查詢,但是,若這個范圍查詢條件利用的不多的情況下,最好不好采用索引。另外,對于采用范圍查詢時,最好能利用TOP關鍵字來限制一次查詢的結果。可以大大的提高查詢的效率。
4、為主鍵或外鍵建立索引
定義有主鍵的索引列,一定要為其建立索引。因為主鍵可以加速定位到表中的某一行。結合索引的作用,可以使得查詢的速度加倍。另外,若要使得某個字段的值唯一,可以通過兩種索引方式實現。一種就是上面所講的主鍵索引。還有一種就是唯一索引,利用UNIQUE關鍵字指定字段內容的唯一性。這兩種方式都會在表中的指定列上自動創建唯一索引。這兩種方式的結果沒有明顯的區別。查詢優化器不會區分到底是哪種方式建立的唯一性索引,而且他們進行數據查詢的方式也是相同的。
若某張表中的數據列定義有外鍵,則最好也要為這個字段建立索引。因為外鍵的主要作用就在于表與表之間的連接查詢。若在外鍵上建立索引,可以加速表與表之間的連接查詢。
5、不要為特殊的數據類型建立索引
有些字段比較特殊。如文本字段(TXT)、圖像類型字段(IMAGE)等等。如果表中的字段屬于這些數據類型,則最好不要為其建立索引。因為這些字段有一些共同的特點。如長度不確定,要么很長,幾個字符;要么就是空字符串。在這種類型的字段上建立索引,那根本起不了作用。相反,還增加了系統的負擔。
6、索引可以跟Where語句的集合融為一體
對于經常用在Where子句中的數據列,將索引建立在Where子句的集合過程中,對于需要加速或者頻繁檢索的數據列,可以讓這些經常參與查詢的數據列按照索引的排序進行查詢,以加快查詢的時間。
總之,索引似一把雙刃劍,即可以提高數據庫的性能,也可能對數據庫的性能起到反面作用。在具體使用過程中要做好平衡。
新聞熱點
疑難解答