web-dev-qa-db-fra.com

Qu'est-ce que la performance de MySQL est "entre".

Existe-t-il de meilleures performances lorsqu'il pose des questions 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 entre la syntaxe est simplement substitué par la deuxième SQL?

42
Daveel

Comme je me souviens, 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.

38
tpdi

De - la documentation :

  • expr entre min et max

Si expr est supérieur ou égal à min et expr est inférieur ou égal à max, entre les retours 1, sinon il renvoie 0. Cela équivaut à l'expression (min <= expr et expr <= max) Si tous les arguments sont du même type. Sinon, la conversion de type a lieu selon les règles décrites à la section 11.2, "Type de conversion dans l'évaluation de l'expression", mais appliquée à tous les trois arguments.

C'est donc vraiment le sucre de syntaxe.

28
Paolo Bergantino

BETWEEN montre une intention plus claire et se lit mieux (quelque chose SQL opté à faire).

10
alex

Les trois déclarations 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 pourrait (selon vos index), utilisez différents index: la commande compte et vous devez tester avec expliquer la requête pour voir la différence

2
Soufiane Ghzal