SQL
Sort Operator がスピルしてる証拠の読み方 (実行計画 + sys.dm_exec_query_stats)
出典: SQL Server ROW_NUMBER の落とし穴 — Window Function の内部実装と Sort Operator の判断軸 — Sort Operator がスピルしてる証拠の読み方 (実行計画 + sys.dm_exec_query_stats)
-- 統計情報を見るためのセッション設定
SET STATISTICS IO ON;
SET STATISTICS TIME ON;
-- ROW_NUMBER + 大量データで Sort Operator を確認
SELECT TOP 100 customer_id, sales_month, total_sales,
ROW_NUMBER() OVER (PARTITION BY sales_month ORDER BY total_sales DESC, customer_id) AS rn
FROM monthly_sales
ORDER BY sales_month, rn;
▸ 実行ボタンで結果を表示
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
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,
▶ 実行可
Sort Operator がスピルしてる証拠の読み方 (実行計画 + sys.dm_exec_query_stats)
#791a21890408
