What's mysql's “BETWEEN” performance over..?

后端 未结 4 1041
一生所求
一生所求 2020-12-03 06:38

Is there any better performance when querying in (particularly) mysql of the following:

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


        
相关标签:
4条回答
  • 2020-12-03 07:01

    BETWEEN shows clearer intent and reads better (something SQL set out to do).

    0 讨论(0)
  • 2020-12-03 07:02

    From the documentation:

    • expr BETWEEN min AND max

    If expr is greater than or equal to min and expr is less than or equal to max, BETWEEN returns 1, otherwise it returns 0. This is equivalent to the expression (min <= expr AND expr <= 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.

    0 讨论(0)
  • 2020-12-03 07:03

    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.

    0 讨论(0)
  • 2020-12-03 07:20

    The three following statement will produce the same result:

    1. i BETWEEN x AND y
    2. x <= i AND i <= Y
    3. i >= 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

    0 讨论(0)
提交回复
热议问题