Nous avons une table qui a nul ou "acceptée" comme des valeurs. Ma requête revient environ 250 lignes.
Si j'ajoute un état de l'état de - p> My 250 lignes retour dans 2 secondes. P> Cependant, Si j'ajoute un état de condition de - p> My 250 rangées retourner en 47 secondes. p> Quelqu'un a-t-il rencontré des problèmes de performance avec l'utilisation de la fonction ISnull? Malheureusement, je suis limité de manière programmative à avoir à utiliser Isnull à ce stade. P> p>
4 Réponses :
Lorsque vous incluez un champ à l'intérieur d'une fonction, il modifie la manière dont l'optimiseur doit fonctionner et la force à ignorer les index. P>
voir ici: Qu'est-ce qui fait une déclaration SQL Sargable? P >
Vous pouvez également contourner les fonctions entièrement en utilisant: p>
où (description = 'accepté' ou description est null) code> p>
Si vous essayez d'utiliser ceci dans l'état où l'état, utilisez est NULL, pas ISNULL P>
Sélectionnez le champ à partir du tableau dans lequel la description est NULL P> blockQuote>
ou le contraire p>
Sélectionnez le champ à partir du tableau où la description n'est pas NULL P> blockQuote>
Utilisation de
AND Description = 'Accepted'
+1 Indiquez le saignement évident: les deux évaluent à la fausse / inconnue lorsque NULL qui est effectivement la même. J'aurais probablement négligé cela aussi.
Par intérêt, comment allez-vous "de manière programmative"?