2012-04-20 6 views
1

J'ai une table et je veux vérifier s'il existe un enregistrement qui satisfait à une condition simple. Je voudrais savoir qui travaillera plus vite:sql, existe ou compte

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

ou

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

+4

existe retourne le résultat dès qu'il trouve l'enregistrement avec correspondance where-clause tandis que le compte doit analyser la table entière pour déterminer le nombre. Donc existe est plus rapide – rt2800

+0

rt2800, écrivez cela comme une réponse et je vais l'accepter))) – superM

+4

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

Répondre

5

existe renvoie un résultat dès qu'elle trouve record avec clause where correspondant en nombre doit analyser tablée pour déterminer le nombre. Donc existe est plus rapide

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

(en supposant que vous avez index sur la colonne where ...)