SqlServer執行計划


MSSQLSERVER執行計划詳解

 

--1、取前10條-性能相同

select top 10 * from ServiceInvoke; --創建時間聚集索引掃描 select top 10 * from AdoLog; --主鍵ID聚集索引掃描

 

--2、根據聚集索引排序-性能提升
--創建時間聚集索引掃描,但是時間索引是已排序的,所以不需要再排序
select top 10 * from ServiceInvoke order by CreateTime desc;
--主鍵ID聚集索引全表掃描,然后根據時間字段排序
select top 10 * from AdoLog order by CreateTime desc;

 

--3、根據非索引排序-性能相同
--創建時間聚集索引掃描,然后根據排序字段排序
select top 10 * from ServiceInvoke order by IsDeleted desc;
--主鍵ID聚集索引掃碼,然后根據排序字段排序
select top 10 * from AdoLog order by Message desc;

--4、根據聚集索引篩選,性能提升
--創建時間聚集索引查找
select top 10 * from ServiceInvoke where CreateTime > '2018-12-18';
--主鍵ID聚集索引掃描
select top 10 * from AdoLog where CreateTime > '2018-12-18' ;

 

--5、根據聚集索引篩選排序-性能提升
--創建時間聚集索引查找
select top 10 * from ServiceInvoke where CreateTime > '2018-12-18' order by CreateTime desc;
--主鍵ID聚集索引掃描
select top 10 * from AdoLog a where CreateTime > '2018-12-18' order by CreateTime desc;

--6、普通字段篩選聚集索引字段排序-對於排序性能消耗較大的情況下性能提升
--創建時間聚集索引掃描,然后條件過濾,但是不用排序
select top 10 * from ServiceInvoke where OutParam like '%330723196704072361%' order by CreateTime desc;
--主鍵ID聚集索引掃描,然后排序
select top 10 * from AdoLog where Message like '%330723196704072361%' order by CreateTime desc;

  

--7、多字段篩選聚集索引排序-性能提升
--創建時間聚集索引查找,然后條件過濾,但是不用排序
select top 10 * from ServiceInvoke where OutParam like '%330723196704072361%' and CreateTime > '2018-12-18' order by CreateTime desc;
--主鍵ID聚集索引掃描,然后排序
select top 10 * from AdoLog a where Message like '%330723196704072361%' and CreateTime > '2018-12-18' order by CreateTime desc;

--8、多字段搜索普通字段排序-性能提升
--創建時間聚集索引查找,然后條件過濾,排序
select top 10 * from ServiceInvoke where OutParam like '%330723196704072361%' and CreateTime > '2018-12-18' order by OutParam desc;
--主鍵ID聚集啥事掃描,排序
select top 10 * from AdoLog a where Message like '%330723196704072361%' and CreateTime > '2018-12-18' order by Message desc;

--9、統計行數
--主鍵非聚集索引掃描 select count(*) from ServiceInvoke
--主鍵非聚集索引掃描,但是查找行數明細減少,性能提升
select count(*) from ServiceInvoke s where s.CreateTime > '2018-12-19'
--創建時間聚集索引掃描,然后過濾 select count(*) from ServiceInvoke s where s.InputParam like '%152%'
--創建時間聚集索引查找,然后過濾-性能提升 select count(*) from ServiceInvoke s where s.CreateTime > '2018-12-19' and s.InputParam like '%152%'

 

 

--10、使用聚集索引和強制使用非聚集索引-根據聚合索引字段(創建時間)篩選出來的數據越少,查詢開銷提升越明顯
--創建時間聚合索引查找 select count(*) from ServiceInvoke s where s.CreateTime > '2018-12-19' and s.InputParam like '%152%'
--主鍵ID非聚合索引掃描 select count(*) from ServiceInvoke s with(index=[PK_dbo.ServiceInvoke]) where s.CreateTime > '2018-12-19' and s.InputParam like '%152%'

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM