SQL の EXISTS と IN の違いは何ですか? 質問する

SQL の EXISTS と IN の違いは何ですか? 質問する

SQL のEXISTSand句の違いは何ですか?IN

はいつ使用したらよいでしょうかEXISTS、また はいつ使用したらよいでしょうかIN?

ベストアンサー1

キーワードexistsはこのように使用できますが、実際にはカウントを回避するための方法として意図されています。

--this statement needs to check the entire table
select count(*) from [table] where ...

--this statement is true as soon as one match is found
exists ( select * from [table] where ... )

これは、よりもはるかに高速であるifため、条件文がある場合に最も役立ちます。existscount

inは、渡す静的リストがある場合に最適です。

 select * from [table]
 where [field] in (1, 2, 3)

ステートメントにテーブルがある場合はinを使用する方が理にかなっていますjoinが、ほとんどの場合は問題にはなりません。クエリオプティマイザはどちらの方法でも同じプランを返すはずです。一部の実装(主にMicrosoft SQL Server 2000などの古いもの)では、inクエリは常に を取得します。ネストされた結合プランではjoinクエリはネストされたマージまたはハッシュ必要に応じて。最新の実装はよりスマートで、が使用されている場合でもプランを調整できますin

おすすめ記事