次のSQLクエリがあり、実行計画を使用して最適化しようとしています。実行計画では、推定サブツリーコストは36.89です。いくつかのテーブルスプール(Eager Spool)があります。誰も私がこのクエリを最適化するのを助けることができます。前もって感謝します。SQL Serverでテーブルスプールを最適化する実行計画
SELECT
COUNT(DISTINCT bp.P_ID) AS total,
COUNT(DISTINCT CASE WHEN bc.Description != 'S' THEN bp.P_ID END) AS m_count,
COUNT(DISTINCT CASE WHEN bc.Description = 'S' THEN bp.P_ID END) AS s_count,
COUNT(DISTINCT CASE WHEN bc.Description IS NULL THEN bp.P_ID END) AS n_count
FROM
progress_tbl AS progress
INNER JOIN Person_tbl AS bp ON bp.P_ID = progress.person_id
LEFT OUTER JOIN Status_tbl AS bm ON bm.MS_ID = bp.MembershipStatusID
LEFT OUTER JOIN Membership_tbl AS m ON m.M_ID = bp.CurrentMembershipID
LEFT OUTER JOIN Category_tbl AS bc ON bc.MC_ID = m.MembershipCategoryID
WHERE
logged_when BETWEEN '2017-01-01' AND '2017-01-31'
「b」エイリアスが表示されません。私は 'b_p'エイリアスがSELECT部分で使われているのを見ていません。投稿されたクエリで何かが間違っています – StanislavL
投稿する前にクエリを編集しました。私はそれに応じてそれを変更します –
作業クエリを提供したので、私の編集 –