Is there any performance difference when using BETWEEN Date1 AND Date2 and Date >= Date1 and Date <= Date2 ?
Asked
Active
Viewed 84 times
2 Answers
0
They are similar in every detail except performance
BETWEEN is a shorthand for the longer syntax
BETWEEN is easy to read and maintain
One thing to be careful of, is if you are using this against a DATETIME, the match for the end date will be the beginning of the day:
<= 20/10/2009
is not the same as:
<= 20/10/2009 23:59:59
But There is a difference in performance .
SQL> create table t (n number, m number not null)
2 partition by list (n)
3 (
4 partition t_0 values (0),
5 partition t_1 values (1)
6 );
Table created.
SQL> create index i_t_m on t (m) local;
Index created.
The plan with between:
SQL> select /*+ index(t i_t_m) */ m
2 from t
3 where n between 0 and 1;
Execution Plan
----------------------------------------------------------
Plan hash value: 555829789
------------------------------------------------------------
| Id | Operation | Name | Rows |
------------------------------------------------------------
| 0 | SELECT STATEMENT | | 1 |
| 1 | PARTITION LIST ALL | | 1 |
| 2 | TABLE ACCESS BY LOCAL INDEX ROWID| T | 1 |
| 3 | INDEX FULL SCAN | I_T_M | 1 |
------------------------------------------------------------
And the other plan:
SQL> select /*+ index(t i_t_m) */ m
2 from t
3 where n >= 0 and n <= 1;
Execution Plan
--------------------------------------------
Plan hash value: 1131641999
--------------------------------------------
| Id | Operation | Name | Rows |
--------------------------------------------
| 0 | SELECT STATEMENT | | 1 |
| 1 | PARTITION LIST ALL| | 1 |
| 2 | INDEX FULL SCAN | I_T_M | 1 |
That is exactly how we discovered it. After switching to between, the query magically started to perform slower.

Nisar
- 5,708
- 17
- 68
- 83
-
For SQL Server there is no difference. `between` and `>= <=` translates to the same execution plan. – Mikael Eriksson May 28 '14 at 11:04
0
I think there is no difference because it only makes the language "sweeter" for humans to use:D in other words "Syntactic sugar" there is no performance benefit :)