程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> 其他數據庫知識 >> MSSQL >> SQL優化基本 應用索引(一個小例子)

SQL優化基本 應用索引(一個小例子)

編輯:MSSQL

SQL優化基本 應用索引(一個小例子)。本站提示廣大學習愛好者:(SQL優化基本 應用索引(一個小例子))文章只能為提供參考,不一定能成為您想要的結果。以下是SQL優化基本 應用索引(一個小例子)正文


依照本文操作和領會,會對sql優化有個根本最簡略的懂得,其他深刻還須要更多材料和理論的進修:
1. 建表:

create table site_user
(
id int IDENTITY(1,1) PRIMARY KEY,
[name] varchar(20),
code varchar(20),
date datetime
)

2. 拔出8萬條數據

declare @m int
set @m=1
while @m<80000
begin
INSERT INTO [demo].[dbo].[site_user]
(
[name]
,[code],date)
VALUES
('name'+CAST(@m AS VARCHAR(20))
,'code'+CAST(@m AS VARCHAR(20)),GETUTCDATE())
select @m=@m+1
END
--小技能:推舉應用相似sqlassist的對象來進步敲寫sql語句的速度

3. 設置翻開一些參數的設置

SET STATISTICS IO on -- 檢查磁盤IO
set statistics time on -- 檢查sql語句剖析編譯和履行時光
SELECT * FROM site_user -- 檢查後果

4. 檢查表索引情形:
sp_helpindex site_user

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

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved