42 votes

Clause BETWEEN versus <= AND >=

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.

30voto

Quassnoi Points 191041

Il n’y a pas de différence.

Notez que `` c’est toujours inclusif et sensible à l’ordre des arguments.

ne sera jamais .

23voto

wweicker Points 2262

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 :

6voto

Benoit Points 35553

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.

3voto

tbone Points 7147

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.

1voto

FolksLord Points 674

Il devrait en être de même.

Un bon moteur de base de données générera le même plan pour cette expression.

Prograide.com

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.

Powered by:

X