SQL
Sort Operator がスピルしてる証拠の読み方 (実行計画 + sys.dm_exec_query_stats)
出典: SQL Server ROW_NUMBER の落とし穴 — Window Function の内部実装と Sort Operator の判断軸 — Sort Operator がスピルしてる証拠の読み方 (実行計画 + sys.dm_exec_query_stats)
SELECT TOP 20
qs.execution_count,
qs.total_logical_reads / qs.execution_count AS avg_logical_reads,
qs.total_elapsed_time / qs.execution_count / 1000 AS avg_elapsed_ms,
SUBSTRING(qt.text, (qs.statement_start_offset / 2) + 1,
((CASE qs.statement_end_offset
WHEN -1 THEN DATALENGTH(qt.text)
ELSE qs.statement_end_offset END
- qs.statement_start_offset) / 2) + 1) AS query_text
FROM sys.dm_exec_query_stats qs
CROSS APPLY sys.dm_exec_sql_text(qs.sql_handle) qt
WHERE qt.text LIKE '%ROW_NUMBER%'
ORDER BY avg_logical_reads DESC;
▸ 実行ボタンで結果を表示
Source収録記事
この snippet は記事の「Sort Operator がスピルしてる証拠の読み方 (実行計画 + sys.dm_exec_query_stats)」セクションに登場する。コードの前後の文脈・ハマりどころの解説は記事本文で。
同じ記事から
2 件-- NG: 同点の時に順位がブレる SELECT customer_id, ROW_NUMBER() OVER (ORDER BY total_sales DESC) AS rn FROM monthly_sales;
▶ 実行可
① ORDER BY なしで PARTITION BY だけ書く罠
#898007531d46
-- 統計情報を見るためのセッション設定 SET STATISTICS IO ON; SET STATISTICS TIME ON;
▶ 実行可
Sort Operator がスピルしてる証拠の読み方 (実行計画 + sys.dm_exec_query_stats)
#ba5a76787842
