1. 程式人生 > >SQL Server資料庫優化:如何設計索引才能提高資料查詢效能?

SQL Server資料庫優化:如何設計索引才能提高資料查詢效能?

當你發現隨著系統升級,版本迭代,使用者不斷增加,你的系統逐漸變慢的時候,就要考慮一下是不是需要對資料庫進行優化了(當然,效能瓶頸不一定在資料庫上),通常來說,優化資料庫的手段,我們最先想到的就是索引

索引的目的是為了讓查詢更快。

為了保證你建立的索引能夠提升效能而不是降低效能,作為開發人員,該選擇什麼樣的列和資料型別來建立索引呢?

根據相關官方資料顯示,有以下注意事項可以參考:

一、哪些要建立索引

  1. 定義主鍵的列
  2. 有外來鍵的列
  3. 經常查詢的資料列
  4. 謂詞(就是在where中使用的列)
  5. 排序分組(ORDER BY、GROUP BY)的列
  6. 只增加的列,如果一個列的資料絕大多數是做增加處理,這樣的列就可以建立索引

二、哪些不要建立索引

  1. 重複值較多的列不要建立索引,比如使用者表的性別欄位,最多三種值(男、女、未知)
  2. text、image、byte[]列不要建立索引
  3. 更新頻繁的列不要建立索引,因為如果該列有索引,那麼在更新值的時候同時需要更新索引,這樣會導致查詢變快,更新變慢

另外,有些資料上說,表的索引要有數量限制單表索引的數目一般不要超過3個,最多不要超過5個。主要是考慮到新增索引列過多會影響磁碟空間和索引維護效能.但是,筆者的觀點:如果我增加一個索引,能明顯提升資料庫查詢效能,為什麼要墨守這樣的限制呢,我不知道35這樣的數字怎麼來的,至今也沒有看到有資料能證明單表索引超過5個後效能表現不好的。

所以,筆者認為單表增加索引的多少,哪些欄位要增加索引,要根據每個SQL查詢的頻率和每個查詢的重要性,同時兼顧磁碟空間和索引維護成本來綜合平衡,找出最佳的優化方案