SQL Server資料庫優化:如何設計索引才能提高資料查詢效能?
阿新 • • 發佈:2018-12-27
當你發現隨著系統升級,版本迭代,使用者不斷增加,你的系統逐漸變慢的時候,就要考慮一下是不是需要對資料庫進行優化了(當然,效能瓶頸不一定在資料庫上),通常來說,優化資料庫的手段,我們最先想到的就是索引
。
索引的目的是為了讓查詢更快。
為了保證你建立的索引能夠提升效能而不是降低效能,作為開發人員,該選擇什麼樣的列和資料型別來建立索引呢?
根據相關官方資料顯示,有以下注意事項可以參考:
一、哪些要建立索引
- 定義主鍵的列
- 有外來鍵的列
- 經常查詢的資料列
- 謂詞(就是在where中使用的列)
- 排序分組(ORDER BY、GROUP BY)的列
- 只增加的列,如果一個列的資料絕大多數是做增加處理,這樣的列就可以建立索引
二、哪些不要建立索引
重複值較多的列不要建立索引
,比如使用者表的性別欄位,最多三種值(男、女、未知)- text、image、byte[]列不要建立索引
- 更新頻繁的列不要建立索引,因為如果該列有索引,那麼在更新值的時候同時需要更新索引,這樣會導致查詢變快,更新變慢
另外,有些資料上說,表的索引要有數量限制單表索引的數目一般不要超過3個,最多不要超過5個
。主要是考慮到新增索引列過多會影響磁碟空間和索引維護效能
.但是,筆者的觀點:如果我增加一個索引,能明顯提升資料庫查詢效能,為什麼要墨守這樣的限制呢,我不知道3
、5
這樣的數字怎麼來的,至今也沒有看到有資料能證明單表索引超過5個後效能表現不好的。
所以,筆者認為單表增加索引的多少,哪些欄位要增加索引,要根據每個SQL查詢的頻率和每個查詢的重要性,同時兼顧磁碟空間和索引維護成本來綜合平衡,找出最佳的優化方案。