SQL優化基本 應用索引(一個小例子)。本站提示廣大學習愛好者:(SQL優化基本 應用索引(一個小例子))文章只能為提供參考,不一定能成為您想要的結果。以下是SQL優化基本 應用索引(一個小例子)正文
5. 履行sql語句
SELECT * FROM site_user su WHERE su.name='name1'表 'site_user'。
掃描計數 1,邏輯讀取 446 次,物理讀取 0 次,預讀 0 次,lob 邏輯讀取 0 次,lob 物理讀取 0 次,lob 預讀 0 次
ctrl+L 快捷鍵檢查履行籌劃:
6. 優化第一步:集合索引掃描開支占了100%,可以斟酌優化為索引查找,在查詢前提name上樹立非集合索引
create index name_index on site_user(name)
sp_helpindex site_user -- 多出來我們新樹立的索引
此時再運轉下面的查詢語句:
SELECT * FROM site_user su WHERE su.name='name1'
表 'site_user'。掃描計數 1,邏輯讀取 4 次,物理讀取 0 次,預讀 0 次,lob 邏輯讀取 0 次,lob 物理讀取 0 次,lob 預讀 0 次。
磁盤邏輯讀取次數顯著降低,然後檢查履行籌劃:
新建的索引曾經起到了感化,然則照樣去掃描了主鍵的集合索引,假如能在一個索引上完成查詢機能會更高,由於這個查詢
所以斟酌進一步優化:
7. 優化第二步: 樹立組合索引
create index name_index4 on site_user(name,code,[date])
表 'site_user'。掃描計數 1,邏輯讀取 3 次,物理讀取 0 次,預讀 0 次,lob 邏輯讀取 0 次,lob 物理讀取 0 次,lob 預讀 0 次。
-- 磁盤邏輯讀取次數又降低了
然後檢查履行籌劃:
如許直接走索引查找就快許多了,應用了index4
8. 優化第三步:我們還可以斟酌應用籠罩索引,將應用到的前提都寫在索引括號內,其他查詢出來的字段放入include中,
create index name_index5 on site_user(name)include(id,code,[date])表 'site_user'。
掃描計數 1,邏輯讀取 3 次,物理讀取 0 次,預讀 0 次,lob 邏輯讀取 0 次,lob 物理讀取 0 次,lob 預讀 0 次。
-- 磁盤邏輯讀取次數沒有顯著變更然後檢查履行籌劃:
異樣走索引查找應用了index5
此時: index4和index5若何選擇?
應用dbcc停止數據剖析:
DBCC SHOW_STATISTICS('site_user','name_index4')
DBCC SHOW_STATISTICS('site_user','name_index5')
可以看到,異樣的數據量,average key length:籠罩索引index5,占用的空間絕對少些,所以我們應當優先選擇籠罩索引來停止優化
鑒於此文so easy,年夜家可以多多提點
作者:gaobanana
出處:http://www.cnblogs.com/gaobanana