J'essaye donc la performance d'un SP. J'ai un doute dans mon esprit à propos de SUM et ISNULL. Quand je résume une colonne, dois-je utiliser ISNULL? Est-il sûr d'utiliser SUM () sans ISNULL? Mon exemple est ci-dessous
SUM(ISNULL(COL1,0))
Comme ISNULL coûte cher, j'ai l'intention d'utiliser SUM sans ISNULL comme ci-dessous
SUM(COL1)
J'ai fait de petits tests et je ne pouvais pas voir les résultats
Oui c'est sûr. Vous pouvez utiliser Sum sans gérer la valeur NULL. Vous pouvez également vérifier cela.
Vous pouvez utiliser comme ça aussi.
ISNULL (SUM (COL1), 0).
Renvoie la somme de toutes les valeurs, ou uniquement les valeurs DISTINCT, dans l'expression. SUM ne peut être utilisé qu'avec des colonnes numériques. Les valeurs nulles sont ignorées.
Pour référence: https://msdn.Microsoft.com/en-IN/library/ms187810.aspx
Mis à jour
Si vous avez [1, 2, NULL, 5] dans 4 colonnes, le résultat sera 8.
Cependant, il n'est pas prudent d'utiliser SUM () sans vérifier NULLS dans de nombreux cas.
Vous pouvez recevoir la valeur null si aucun contenu ne correspond à une clause donnée. Et si vous utilisez cette valeur SUMMED dans une autre fonction, vous vous inquiétez peut-être.
Plus de détails ici: https://msdn.Microsoft.com/en-GB/library/ms187810.aspx
Consultez également la méthode COALESCE https://msdn.Microsoft.com/en-IN/library/ms190349.aspx
PS: Consultez également cet article - Ma requête Select SUM renvoie null. Il devrait retourner 0
Voici 3 images qui montre sans vérifier pour NULL il renvoie NULL et non 0.
SUM sans vérification ISNULL
Il n'est pas obligatoire d'utiliser NULL et COALESCE lors de l'exécution de SUM car SUM ignore toujours les valeurs null.
Référez-vous au lien: https://msdn.Microsoft.com/en-IN/library/ms187810.aspx pour plus d'informations.
Il est préférable d’utiliser la méthode COALESCE avant l’agrégation SUM.