テーブルがあり、単純な条件を満たすレコードが存在するかどうかを確認したい。 私はより速く動作しますどの知りたい:sql、existsまたはcount
if (select count(*) from ... where ...) > 0
または
if exists (select top (1) from ... where ...)
。
テーブルがあり、単純な条件を満たすレコードが存在するかどうかを確認したい。 私はより速く動作しますどの知りたい:sql、existsまたはcount
if (select count(*) from ... where ...) > 0
または
if exists (select top (1) from ... where ...)
。
が戻り次第カウントが、カウントを決定するために、テーブル全体をスキャンする必要がある一方で、それはWHERE句に一致したレコードを見つけるとなる存在(...あなたはwhere
列に索引を持っていると仮定)。存在がより速い
if exists (select 1 from ... where ...)
が存在すると結果がすぐに返されます。where-clauseと一致するレコードが見つかるとすぐにカウントがカウントを決定するために全テーブルをスキャンする必要があります。だから存在はより速いです – rt2800
rt2800、答えとしてそれを書いてください))) – superM
http://sqlblog.com/blogs/andrew_kelly/archive/2007/12/15/exists-vs-count-the- battle-never-ends.aspx – ken2k