/ /内部クエリを追加しても実行計画は変更されません - sql、performance、sql-server-2005、sql-execution-plan

内部クエリを追加しても、実行計画は変更されません - sql、performance、sql-server-2005、sql-execution-plan

次のクエリを考えてみましょう。

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つのクエリを同じものに縮退することができたので、同じ計画を立てます。