數據庫創建索引的注意事項


 

索引可以提高數據的訪問速度,但同時也增加了插入、更新和刪除操作的處理時間;建立的時候應該考慮為 經常被用作查詢條件、或者被要求排序的字段建立索引

一、數據庫索引創建規則

  • 1、表的主鍵、外鍵必須有索引;
  • 2、數據量超過300的表應該有索引;
  • 3、經常與其他表進行連接的表,在連接字段上應該建立索引;
  • 4、經常出現在Where子句中的字段,特別是大表的字段,應該建立索引;
  • 5、索引應該建在選擇性高的字段上;
  • 6、索引應該建在小字段上,對於大的文本字段甚至超長字段,不要建索引;
  • 7、復合索引的建立需要進行仔細分析;盡量考慮用單字段索引代替:
    1.  正確選擇復合索引中的主列字段,一般是選擇性較好的字段;
    2.  復合索引的幾個字段是否經常同時以AND方式出現在Where子句中?單字段查詢是否極少甚至沒有?如果是,則可以建立復合索引;否則考慮單字段索引;
    3.  如果復合索引中包含的字段經常單獨出現在Where子句中,則分解為多個單字段索引;
    4.  如果復合索引所包含的字段超過3個,那么仔細考慮其必要性,考慮減少復合的字段;
    5.  如果既有單字段索引,又有這幾個字段上的復合索引,一般可以刪除復合索引;搜索
  • 8、頻繁進行數據操作的表,不要建立太多的索引;
  • 9、刪除無用的索引,避免對執行計划造成負面影響;

二、一般選擇在這樣的列上創建索引

  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. 刪除不再使用,或者很少被使用的索引。表中的數據被大量更新,或者數據的使用方式被改變后,原有的一些索引可能不再被需要。數據庫管理員應當定期找出這些索引,將它們刪除,從而減少索引對更新操作的影響。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM