2012-04-20 4 views
1

テーブルがあり、単純な条件を満たすレコードが存在するかどうかを確認したい。 私はより速く動作しますどの知りたい:sql、existsまたはcount

if (select count(*) from ... where ...) > 0

または

if exists (select top (1) from ... where ...)

+4

が存在すると結果がすぐに返されます。where-clauseと一致するレコードが見つかるとすぐにカウントがカウントを決定するために全テーブルをスキャンする必要があります。だから存在はより速いです – rt2800

+0

rt2800、答えとしてそれを書いてください))) – superM

+4

http://sqlblog.com/blogs/andrew_kelly/archive/2007/12/15/exists-vs-count-the- battle-never-ends.aspx – ken2k

答えて

5

が戻り次第カウントが、カウントを決定するために、テーブル全体をスキャンする必要がある一方で、それはWHERE句に一致したレコードを見つけるとなる存在(...あなたはwhere列に索引を持っていると仮定)。存在がより速い

3
if exists (select 1 from ... where ...)