1.清空緩存
功能說(shuō)明:在查看執行計劃的時(shí)候,應該先清除緩存。否則有可能你看到的計劃或查詢(xún)時(shí)間不一定是真實(shí)的,因為SQL會(huì )利用緩存區的數據
2.重建索引,整理索引碎片
功能說(shuō)明: 當你發(fā)現掃描密度行,最佳計數和實(shí)際計數的比例已經(jīng)嚴重失調,邏輯掃描碎片占了非常大的百分比,每頁(yè)平均可用字節數非常大時(shí),就說(shuō)明你的索引需要重新整理一下了。
分析表的索引建立情況:
DBCC showcontig('TableName')
執行結果如下:

執行重建索引命令:
再次執行分析表索引命令:
DBCC showcontig('TableName')執行結果如下:

3.更新統計信息
分析說(shuō)明:當索引創(chuàng )建時(shí),優(yōu)化器會(huì )創(chuàng )建統計信息到索引列所在的表或者視圖上,除此之外,如果對Auto_Create_Statistics選項設置了ON,優(yōu)化器會(huì )創(chuàng )建一個(gè)單列統計信息,及時(shí)它沒(méi)有出現在查詢(xún)的所需列上。如果你覺(jué)得一些查詢(xún)性能有問(wèn)題,檢查所有謂詞,如果這些列缺失了統計信息,你可以手動(dòng)增加,有時(shí)候,DTA(數據庫優(yōu)化顧問(wèn))也會(huì )建議你創(chuàng )建統計信息。一般情況下,在查詢(xún)編譯之前,如果開(kāi)啟了同步更新統計信息,SQLServer如果發(fā)現統計信息過(guò)時(shí),會(huì )引發(fā)更新統計信息的操作,然后你的查詢(xún)就會(huì )使用上實(shí)時(shí)的統計信息。而這個(gè)操作會(huì )阻塞查詢(xún),知道更新結束,但是不會(huì )保留這些查詢(xún),它會(huì )更新統計信息以便下次運行查詢(xún)的時(shí)候可以使用上較新的統計信息。默認情況下,只有sysadmin/db_owner/對象的創(chuàng )建者這三種角色的成員才有權限創(chuàng )建和更新統計信息。
4.重建整個(gè)庫的索引碎片
分析說(shuō)明:由于表上有過(guò)度地插入、修改和刪除操作,索引頁(yè)被分成多塊就形成了索引碎片,如果索引碎片嚴重,那掃描索引的時(shí)間就會(huì )變長(cháng),甚至導致索引不可用,因此數據檢索操作就慢下來(lái)了。檢查索引碎片:

SELECT OBJECT_NAME(dt.object_id), si.name, dt.avg_fragmentation_in_percent, dt.avg_page_space_used_in_percent FROM (SELECT object_id, index_id, avg_fragmentation_in_percent, avg_page_space_used_in_percent FROM sys.dm_db_index_physical_stats (DB_ID(), NULL, NULL, NULL, 'DETAILED') WHERE index_id <> 0 ) AS dt INNER JOIN sys.indexes si ON si.object_id = dt.object_id AND si.index_id = dt.index_id

執行結果:

(1)什么時(shí)候該索引重組?
檢查 Externalfragmentation 部分
當avg_fragmentation_in_percent 的值介于 10 到 15 之間
檢查 Internalfragmentation 部分
當avg_page_space_used_in_percent 的值介于 60 到 75 之間
(2)什么時(shí)候重建索引?
檢查 Externalfragmentation 部分
當avg_fragmentation_in_percent 的值大于 15
檢查 Internalfragmentation 部分
當avg_page_space_used_in_percent 的值小于 60
生成相應的SQL語(yǔ)句:


執行結果:

執行生成的SQL語(yǔ)句:
ALTER INDEX [PK__gd_moveb__1489BC61D65FF2AA] ON [dbo].[gd_movebarcode_detail] REBUILDgoALTER INDEX [PK_branchstylealldata] ON [dbo].[branchstylealldata] REORGANIZEgoALTER INDEX [PK_PubBranchLocation_1] ON [dbo].[PubBranchLocation] REBUILDgo
5.重建整個(gè)庫的統計信息
6.查看SQL語(yǔ)句執行時(shí)間,CPU占用情況

SET STATISTICS io ONSET STATISTICS time ONgo---你要測試的sql語(yǔ)句select * from u_tag where qty =(select max(qty) from u_bag)goSET STATISTICS profile OFFSET STATISTICS io OFFSET STATISTICS time OFF

聯(lián)系客服