レポートを作成しているため、2 つの異なるタイプのクエリを作成しました。しかし、これら 2 つの方法のパフォーマンスには大きな違いがあります。その理由は何ですか?私のメインテーブル(テーブルAと仮定)には日付列が含まれています。日付に基づいてデータをフィルタリングしています。約 10 のテーブルに参加します。このテーブルを使用する必要があります。
最初の方法:
select A.id,A1.name,...
from table A
join A1
join A2 ....A10
where A.Cdate >= @date
and A.Cdate <= @date
2 番目の方法:
With CTE as(select A.id from A where A.Cdate>=@date and A.Cdate<=@date)
select CTE.id, A1.name,.... from CTE join A1 join A2....A10
ここで2番目の方法は高速です。理由は何ですか?最初の方法では、A のフィルター処理されたデータのみが他のテーブル データと結合されますよね?