SQL SERVER效能優化 查詢速度提高

2021-07-12 04:09:45 字數 1340 閱讀 3438

近段時間去面試,很多都會問到關於sql語句優化及大資料量資料查詢速度提公升的問題,但是由於我個人之前開發都是一知半解的狀態,很多東西都沒能掌握明白,感覺自己就是菜鳥一枚,暈死,和朋友閒聊聊到查詢效率的提公升可以通過建立聚集索引分割槽。所以,就好好了解下這其中的原理。

一.索引的概念

資料庫索引,是資料庫管理系統中乙個排序的資料結構

,以協助快速查詢、更新資料庫表中資料。

聚集索引表的儲存結構

二.怎麼建立合適高效的索引

一般來說,應該在這些列上建立索引:

1.在經常需要搜尋的列上,可以加快搜尋的速度;

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

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

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

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

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

同樣,對於有些列不應該建立索引。一般來說,不應該建立索引的的這些列具有下列特點:

1.對於那些在查詢中很少使用或者參考的列不應該建立索引。這是因為,既然這些列很少使用到,因此有索引或者無索引,並不能提高查詢速度。相反,由於增加了索引,反而降低了系統的維護速度和增大了空間需求。

2.對於那些只有很少資料值的列也不應該增加索引。這是因為,由於這些列的取值很少,例如人事表的性別列,在查詢的結果中,結果集的資料行佔了表中資料行的很大比例,即需要在表中搜尋的資料行的比例很大。增加索引,並不能明顯加快檢索速度。

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

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

根據資料庫的功能,可以在資料庫設計器中建立三種索引:唯一索引、主鍵索引和聚集索引

三.索引的代價

1.佔據資料儲存空間

2.更新和插入資料花費更多時間,因為需要對索引進行變動 

SQLServer效能優化之查詢提示

資料庫於週日被重啟了,剛好看看優化後的效果,順便再找找新的需要優化的sql 剛好找到了類似的幾條語句,如下 select from tablea where id not in select id from tableb 從執行時間20秒 70秒不等。開始分析 首先是否用上索引,兩個id均是主鍵所以...

SQL Server 查詢效能優化 相關文章

來自 sql server 查詢效能優化 堆表 碎片與索引 一 sql server 查詢效能優化 堆表 碎片與索引 二 sql server 查詢效能優化 覆蓋索引 一 sql server 查詢效能優化 覆蓋索引 二 sql server 查詢效能優化 建立索引原則 一 sql server 查...

SQLServer效能優化之查詢提示

資料庫於週日被重啟了,剛好看看優化後的效果,順便再找找新的需要優化的sql 剛好找到了類似的幾條語句,如下 select from tablea where id not in select id from tableb 從執行時間20秒 70秒不等。開始分析 首先是否用上索引,兩個id均是主鍵所以...