Is there any better performance when querying in (particularly) mysql of the following:
SELECT * FROM `table` WHERE `unix_date` BETWEEN 1291736700 AND 1291737300
over:
SELECT * FROM `table` WHERE `unix_date` >= 1291736700 AND `unix_date` <= 12开发者_如何学运维91737300
or BETWEEN syntax is just being substituted with the second sql?
As I recall, there's no difference. But see for yourself if:
explain plan for
SELECT * FROM `table` WHERE `unix_date` BETWEEN 1291736700 AND 1291737300
and:
explain plan for
SELECT * FROM `table` WHERE `unix_date` >= 1291736700 AND `unix_date` <= 1291737300
produce the same plans.
From the documentation:
exprBETWEENminANDmaxIf
expris greater than or equal tominandexpris less than or equal tomax, BETWEEN returns 1, otherwise it returns 0. This is equivalent to the expression (min<=exprANDexpr<=max) if all the arguments are of the same type. Otherwise type conversion takes place according to the rules described in Section 11.2, “Type Conversion in Expression Evaluation”, but applied to all the three arguments.
So it really is just syntax sugar.
BETWEEN shows clearer intent and reads better (something SQL set out to do).
The three following statement will produce the same result:
i BETWEEN x AND yx <= i AND i <= Yi >= x AND i <= Y
But in configuration 3 mysql might (depending on your indexes) use different indexes: order matters and you should be testing with EXPLAIN query to see the difference
加载中,请稍侯......
精彩评论