48 votes

Quelle est la performance "BETWEEN" de mysql par rapport à .. ?

Y a-t-il de meilleures performances lors de l'interrogation dans (en particulier) mysql des éléments suivants :

 SELECT * FROM `table` WHERE `unix_date` BETWEEN 1291736700 AND 1291737300

plus de:

 SELECT * FROM `table` WHERE `unix_date` >= 1291736700 AND `unix_date` <= 1291737300

ou la syntaxe BETWEEN est simplement remplacée par le deuxième sql?

44voto

tpdi Points 18427

Si je me souviens bien, il n'y a pas de différence. Mais voyez par vous-même si :

 explain plan for 
SELECT * FROM `table` WHERE `unix_date` BETWEEN 1291736700 AND 1291737300

et:

 explain plan for
SELECT * FROM `table` WHERE `unix_date` >= 1291736700 AND `unix_date` <= 1291737300

produire les mêmes plans.

9voto

alex Points 186293

BETWEEN montre une intention plus claire et se lit mieux (ce que SQL a entrepris de faire).

5voto

Soufiane Ghzal Points 678

Les trois instructions suivantes produiront le même résultat :

  1. i BETWEEN x AND y
  2. x <= i AND i <= Y
  3. i >= x AND i <= Y

Mais dans la configuration 3, mysql peut (en fonction de vos index) utiliser des index différents : l'ordre compte et vous devriez tester avec la requête EXPLAIN pour voir la différence

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