建立索引的原則

2021-06-10 12:59:31 字數 1728 閱讀 1338

索引可以提高資料的訪問速度,但同時也增加了插入、更新和刪除操作的處理時間。所以是否要為表增加索引、索引建立在那些欄位上,是建立索引前必須要考慮的問題。解決此問題就是分析應用程式的業務處理、資料使用,為經常被用作查詢條件、或者被要求排序的字段建立索引。

索引是建立在資料庫表中的某些列的上面。

因此,在建立索引的時候,應該仔細考慮在哪些列上可以建立索引,在哪些列上不能建立索引。

一般選擇在這樣的列上建立索引:

1.    在經常需要搜尋查詢的列上建立索引,可以加快搜尋的速度;

2.    在作為主鍵的列上建立索引,強制該列的唯一性和組織表中資料的排列結構;

3.    在經常用在連線的列上建立索引,這些列主要是一些外來鍵,可以加快連線的速度;

4.    在經常需要根據範圍進行搜尋的列上建立索引,因為索引已經排序,其指定的範圍是連續的;

5.    在經常需要排序的列上建立索引,因為索引已經排序,這樣查詢可以利用索引的排序,加快排序查詢

時間;6.    在經常使用在where子句中的列上面建立索引,加快條件的判斷速度;

7.    為經常出現在關鍵字order by、group by、distinct後面的字段,建立索引。

一般不選擇具有這些特點的列上建立索引:

1.    對於那些在查詢中很少使用或者參考的列不應該建立索引。這是因為,既然這些列很少使用到,因此有索引或者無索引,並不能提高查

詢速度。相反,由於增加了索引,反而降低了系統的維護速度和增大了空間需求;

2.    不要在有大量相同取值的字段上,建立索引。這是因為,由於這些列的取值很少,例如人事表的性別列,在查詢的結果中,結果集的資料行佔了表中資料行的很大比例,即需要在表中搜尋的資料行的比例很大。增加索引,並不能明顯加

快檢索速度;

3.    對於那些定義為text, image和bit資料型別的列不應該增加索引。這是因為,這些列的資料量要麼相當大,要麼取值很少;

4.    當修改效能遠遠大於檢索效能時,不應該建立索引。這是因為,修改效能和檢索效能是互相矛盾的。當增加索引時,會提高檢索效能,但是會降低修改效能。當減少索引時,會提高修改效能,降低檢索效能。因此,當修改效能遠遠大於檢索效能時,不應該建立索引。

建立索引需要注意的地方:

1.    限制表上的索引數目。對乙個存在大量更新操作的表,所建索引的數目一般不要超過3個,最多不要超過5個。索引雖說提高了訪問速度,但太多索引會影響資料的更新操作。

2.    避免在取值朝乙個方向增長的字段(例如:日期型別的字段)上,建立索引;對復合索引,避免將這種型別的字段放置在最前面。由於欄位的取值總是朝乙個方向增長,新記錄總是存放在索引的最後乙個葉頁中,從而不斷地引起該葉頁的訪問競爭、新葉頁的分配、中間分支頁的拆分。此外,如果所建索引是聚集索引,表中資料按照索引的排列順序存放,所有的插入操作都集中在最後乙個資料頁上進行,從而引起插入「熱點」。

3.    對復合索引,按照欄位在查詢條件中出現的頻度建立索引。在復合索引中,記錄首先按照第乙個字段排序。對於在第乙個欄位上取值相同的記錄,系統再按照第二個欄位的取值排序,以此類推。因此只有復合索引的第乙個字段出現在查詢條件中,該索引才可能被使用。因此將應用頻度高的字段,放置在復合索引的前面,會使系統最大可能地使用此索引,發揮索引的作用。

4.    刪除不再使用,或者很少被使用的索引。表中的資料被大量更新,或者資料的使用方式被改變後,原有的一些索引可能不再被需要。資料庫管理員應當定期找出這些索引,將它們刪除,從而減少索引對更新操作的影響。

索引建立的原則

索引查詢是資料庫中重要的記錄查詢方法,要不要進入索引以及在那些欄位上建立索引都要和實際資料庫系統的查詢要求結合來考慮,下面給出實際中的一些通用的原則 1.在經常用作過濾器的字段上建立索引 2.在sql語句中經常進行group by order by的字段上建立索引 3.在不同值較少的字段上不必要建立...

建立索引的原則

1 定義主鍵的資料列一定要建立索引。2 定義有外來鍵的資料列一定要建立索引。3 對於經常查詢的資料列最好建立索引。4 對於需要在指定範圍內的快速或頻繁查詢的資料列 5 經常用在where 子句中的資料列。6 經常出現在關鍵字order by group by distinct後面的字段,建立索引。如...

索引的建立原則

索引的建立原則 基於合理的資料庫設計,經過深思熟慮後為表建立索引,是獲得高效能資料庫系統的基礎。而未經合理分析便新增索引,則會降低系統的總體效能。索引雖然說提高了資料的訪問速度,但同時也增加了插入 更新和刪除操作的處理時間。是否要為表增加索引 索引建立在那些欄位上,是建立索引前必須要考慮的問題。解決...