Sqlserver
 sql >> Base de données >  >> RDS >> Sqlserver

Quel est le meilleur moyen de vérifier si un élément existe ou non :sélectionnez Count(ID)OR Exist(...) ?

EXISTE, toujours

  • COUNT parcourra la table ou un index :vous avez demandé un COUNT
  • EXISTS s'arrêtera dès qu'il trouvera une ligne

Modifier, pour être clair

Bien sûr, dans ce cas si la colonne email est unique et indexée elle sera proche.

Généralement, EXISTS utilise moins de ressources et est également plus correct. Vous recherchez l'existence d'une ligne, pas "plus de zéro" même si elles sont identiques

Edit2 :Dans les EXISTS, vous pouvez utiliser NULL, 1, ID, ou même 1/0 :ce n'est pas coché...

Modification du 21 mai 2011 :

Il semble que cela ait été optimisé dans SQL Server 2005+, donc COUNT est maintenant identique à EXISTS dans ce cas