次のクエリのSQL Server実行計画を理解できる人はいますか?SQL Serverのスカラー関数とサブクエリの実行計画の分析
副問合せのバージョン(クエリ2)は、設定ベースであるため、より高速に実行することが期待されていました。これは、独立して、クエリを走ったときにケースのように表示されます - わずかに - 実行計画は、それぞれ15%対85%としてクエリのコストを示ししかし:
//-- Query 1 (15%) - Scalar Function
SELECT
gi.GalleryImageId,
gi.FbUserId,
dbo.GetGalleryImageVotesByGalleryImageId(gi.GalleryImageId) AS Votes
FROM
GalleryImage gi
//-- Query 2 (85%) - Subquery
SELECT
gi.GalleryImageId,
gi.FbUserId,
(SELECT COUNT(*) FROM GalleryImageVote WHERE GalleryImageId = gi.GalleryImageId)
FROM
GalleryImage gi
私はここで何をしないのです。実行計画は機能のコストをスキップしますか?また、上記のいずれかがCTEまたはOVER/PARTITIONクエリでうまく機能するかどうかについての提案はありますか?
ありがとうございます!
両方を同じクエリエディタウィンドウに表示しましたか?クエリアナライザはそれらを比較し、相対値をウィンドウ内のものに割り当てます(15%/ 85%)。 – JNK
はい、それは%の値がどこから来たのでしょうか? – Robarondaz
クエリの実行時間は必ずしもコストと等しいとは限りません。 SQL Serverは、CPUおよびRAMの使用量がHDDの読み取り量よりも大きくなると思われます。 – jahu