Y a-t-il une différence de performance entre l’utilisation d’une clause BETWEEN ou l’utilisation de comparaisons = ?
c’est-à-dire ces deux requêtes :
... et
Dans cet exemple, la colonne année est VARCHAR2(4) avec un index dessus.
Y a-t-il une différence de performance entre l’utilisation d’une clause BETWEEN ou l’utilisation de comparaisons = ?
c’est-à-dire ces deux requêtes :
... et
Dans cet exemple, la colonne année est VARCHAR2(4) avec un index dessus.
Il n’y a pas de différence de performance entre les deux exemples de requêtes, car il s’agit simplement d’une façon abrégée d’exprimer une comparaison de plage *inclusive.* Lorsqu’Oracle analyse la
condition, elle se développe automatiquement dans des clauses de comparaison distinctes :
ex.
... deviendra automatiquement :
En fait, cela dépend de votre moteur SGBD.
Certains systèmes de gestion de base de données calculent deux fois votre expression (une fois pour chaque comparaison) et une seule fois lorsque vous utilisez `` .
En fait, si l’expression peut avoir un résultat non déterministe `` aura un comportement différent, comparez les éléments suivants dans SQLite :
Cela peut prendre beaucoup de temps si votre expression est (par exemple) une sous-requête.
En cas de doute (pour Oracle en tout cas), exécutez un plan d’explication et vous verrez ce que l’optimiseur veut faire. Cela s’appliquerait à la plupart des questions sur « y a-t-il une différence de performance entre ... ». Bien sûr, il existe également de nombreux autres outils, mais expliquer le plan est un bon début.
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.