8
votes

Utiliser 'isnull (x, 0) = 0' au lieu de (x est null ou x = 0)

Quelle est la meilleure option à utiliser dans SQL? xxx

ou xxx

merci


0 commentaires

4 Réponses :


0
votes

Dans cette situation, mon modèle est d'utiliser des coalesce: xxx

ou xxx


0 commentaires

0
votes

Ils devraient être identiques, mais je faisais des tests sur certaines très grandes instructions de sélection et ISNULL (x, 0) = 0 un type similaire se sont révélés plus rapides.

La conclusion logique sur ceci est que l'équipe SQL a optimisé cela en quelque sorte.

Pas au point, la regroupement doit être utilisée sur Isnull, car la coalesce est la méthode SQL standard tandis que ISnull est spécifique à MS. Cela signifie que, à l'avenir (selon les pensées de la SP), Isnull pourrait être obsolète.


0 commentaires

5
votes

Sauf si vous rencontrez des problèmes de performance, je suggérerais d'utiliser le plus facile pour vous de lire. Coallece et Isnull sont identiques quand il n'y a que deux valeurs (c'est-à-dire null et 0)


0 commentaires

2
votes

Le "meilleur" à utiliser dépend de la requête que vous écrivez, c'est à partir du coalesce page dans Bol

Isnull and Coalise bien équivalent, peut se comporter différemment. Une expression impliquant isnull avec non-null Les paramètres sont considérés comme non NULL, tandis que les expressions impliquant Regrouper avec des paramètres non nuls est considéré comme nul.

Alors sans en savoir plus sur toute la requête, ils sont probablement équivalents mais YMMV et sans tester réellement, vous ne pouvez pas supposer que ce sera plus rapide.

En outre, la comparaison de isnull à coalesce n'est utile que lorsque vous devez choisir entre deux valeurs. Dès qu'il y a plus de deux, vous devrez utiliser coalesce .


0 commentaires