Sql-Server
需要擷取統計資訊以進行查詢分析
需要什麼統計數據從理論上證明 X 查詢比 Y 查詢更好。據我所知,我需要尋找:
- 查詢經過時間
- 邏輯讀取
- 邏輯寫入
- 物理讀取
- 物理寫入
我還需要其他統計數據來衡量嗎?我還需要測量嗎
- 記憶體壓力
- TempDb 空間使用情況
- 緩衝區使用
- 查詢計劃(掃描、搜尋)
得到完美的分析。
從場景來看:
我有兩個查詢,一個是使用索引,一個是沒有索引。我需要顯示哪個查詢表現良好。
我假設您正在談論相同的查詢,使用不同的索引執行。您不能隨意比較 2 個完全不同的查詢,它們執行 2 個不同的事情。正如 Aaron 在評論中所說,我可以將我的 2001 VW 與 2015 Camaro 進行比較,兩者之間沒有關聯,Camaro 可能會跑得更快,但那是因為它的引擎更大。相反,我的大眾汽車將獲得更好的油耗,因為發動機更小。
話雖如此,我使用以下
SET
選項:SET STATISTICS TIME, IO ON
一旦這些都打開,查詢將踢出所有 CPU 使用率和已執行的讀取。見下文:
然後我使用 www.statisticsparser.com 將數據合併為易於閱讀的格式。這需要處理 CPU/IO。
可以從 SSMS 中的“獲取實際執行計劃”選項中提取執行計劃。執行計劃還將具有記憶體授予(為查詢分配了多少記憶體)。