Avis de non-responsabilité: Tout ce qui suit n'est qu'anecdotique et tiré directement de mon expérience personnelle. Quiconque se sent prêt à mener une analyse empiriquement plus rigoureuse est le bienvenu pour la mener à bien et voter si je le suis. Je suis également conscient que SQL est un langage déclaratif et que vous n'êtes pas censé avoir à considérer COMMENT votre code est traité lorsque vous l'écrivez, mais, parce que j'apprécie mon temps, je le fais.
Il existe des instructions logiquement équivalentes infinies, mais j'en considérerai trois (ish).
Cas 1: deux comparaisons dans un ordre standard (ordre d'évaluation fixe)
A> = MinBound ET A <= MaxBound
Cas 2: Sucre syntaxique (l'ordre d'évaluation n'est pas choisi par l'auteur)
UN ENTRE MinBound ET MaxBound
Cas 3: Deux comparaisons dans un ordre éduqué (ordre d'évaluation choisi au moment de l'écriture)
A> = MinBound ET A <= MaxBound
Ou
A <= MaxBound AND A> = MinBound
D'après mon expérience, le cas 1 et le cas 2 n'ont pas de différences de performances cohérentes ou notables car ils ignorent l'ensemble de données.
Cependant, le cas 3 peut considérablement améliorer les temps d'exécution. Plus précisément, si vous travaillez avec un grand ensemble de données et que vous avez des connaissances heuristiques pour savoir si A est plus susceptible d'être supérieur à MaxBound ou inférieur à MinBound vous pouvez améliorer sensiblement les temps d'exécution en utilisant le cas 3 et en ordonnant les comparaisons. en conséquence.
Un cas d'utilisation que j'ai est l'interrogation d'un grand ensemble de données historiques avec des dates non indexées pour les enregistrements dans un intervalle spécifique. Lors de l'écriture de la requête, j'aurai une bonne idée de l'existence ou non de plus de données AVANT l'intervalle spécifié ou APRÈS l'intervalle spécifié et je pourrai ordonner mes comparaisons en conséquence. J'ai eu des temps d'exécution réduits de moitié en fonction de la taille de l'ensemble de données, de la complexité de la requête et du nombre d'enregistrements filtrés par la première comparaison.