0
本で提供される相関サブクエリの例は、次のとおりです。 2月12日に発注し特定のコードのサブクエリと相関サブクエリの相違点
お客様、2007
SELECT custid, companyname
FROM Sales.Customers AS C
WHERE EXISTS
(SELECT *
FROM Sales.Orders AS O
WHERE O.custid = C.custid
AND O.orderdate = '20070212');
しかし、私は、どちらも同じ出力を与える簡単なサブクエリ
SELECT custid, companyname
FROM Sales.Customers
WHERE custid IN
(SELECT [custid] FROM [Sales].[Orders]
WHERE [orderdate] ='20070212')
を使用して、同じ目的のために、次のコードを書きました。どの方法が良いですか?なぜ?そして私は、私はSQL Server上で自分のデータに類似したクエリを試してみました
ここでは、使用しているSQL Serverのバージョンによってパフォーマンスが異なる場合があります(http://stackoverflow.com/questions/2065329/sql-server-in-vs-exists-performance)。 回答とコメントで読めるように、2008年現在、オプティマイザはINとEXISTSの両方を同等に扱います。 –
EXISTSはSELECTが行を返し、EXISTSがTRUEと評価された場合はFALSEに評価され、SELECTが評価されます。 最も効率的な方法が最適かもしれません;)何が異なるかを知るには、クエリの実行計画を検討する必要があります。同じ実行計画を得ている可能性があります。これは、2つのクエリが実質的に同一であることを意味します。 –