次のクエリを考えてみましょう。
select * from contact where firstname like "%some%"
select * from
(select * from contact) as t1
where firstname like "%some%"
両方のクエリの実行計画は同じで、同時に実行されます。しかし、私は、2番目のクエリが異なるプランを持ち、コンタクトと適用フィルタからすべてのデータを選択する必要があるため、よりゆっくり実行することを期待していました。私は間違っているように見える。
私はこれがどのように起こっているのだろうか?
データベースサーバー:SQL Server 2005
回答:
回答№1は6"クエリオプティマイザ"は何が起きているかです。 クエリを実行すると、SQL Serverはコストベースのオプティマイザを使用して、その要求を満たすための最良の方法(実行計画など)を特定します。場所Aから場所Bへのルートマップと考えてくださいSQL Serverは、クエリを満たすデータを返すという最終目標を達成するために、さまざまなルートを試行し、許容可能なコストを持つものを使用します。それは不必要に高価になるので、必ずしもあらゆる方法で分析する必要はありません。
あなたのケースでは、オプティマイザは、これらの2つのクエリを同じものに縮退することができたので、同じ計画を立てます。