Je suis en train de refactoriser un ancien code SQL de collègues et j'ai remarqué dans quelques endroits une clause where du formulaire where [SomeCol] in ('XYZ')
. Je suppose que c'est juste un résultat de copier-coller rapide d'autres endroits dans le code avec plus de valeurs dans les crochets (where [SomeCol] in ('ABC', 'DEF', 'XYZ')
) et les remplacer par [SomeCol] = 'XYZ'
, même si ce n'est que pour des raisons de propreté.Toute différence entre [col] dans ('élément unique') et [col] = 'élément unique'?
Je voulais juste être absolument sûr que les deux déclarations sont fonctionnellement équivilentes - je suppose que [SomeCol] = 'XYZ'
est un peu (probablement unoticably) plus efficace, mais ne veulent pas savoir plus tard je trébuche sur certains obscurs fonctionnalité qui produira des résultats différents.
Jetez un coup d'œil au plan d'exécution. Pour mes exemples, c'est la même chose. – makciook
Ils sont équivalents dans tous les sens. Pas de différence de résultats et pas de différence de performance non plus. Si vous vérifiez le plan d'exécution, vous verrez que votre '[SomeCol] dans ('XYZ')' est exécuté comme '[SomeCol] = 'XYZ'' donc vous ne ferez aucune différence en le changeant. –
@Kai. . . La seule différence est la maintenabilité. Si vous ajoutez et supprimez des valeurs, le formulaire 'in' est plus sûr. Vous n'avez pas à vous soucier de quelqu'un qui change 'x = 'a' et y = 'c'' 'x = 'a' ou x = 'b' et y = 'c''. –