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?
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.
De - la documentation :
expr
entremin
etmax
Si
expr
est supérieur ou égal àmin
etexpr
est inférieur ou égal àmax
, entre les retours 1, sinon il renvoie 0. Cela équivaut à l'expression (min
<=expr
etexpr
<=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.
BETWEEN
montre une intention plus claire et se lit mieux (quelque chose SQL opté à faire).
Les trois déclarations suivantes produiront le même résultat:
i BETWEEN x AND y
x <= i AND i <= Y
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