回答
都沒有。他們創建完全相同的執行計劃。
我使用它們的時間不取決於性能,而取決於數據。
如果數據是離散值,然後我用BETWEEN
...
x BETWEEN 0 AND 9
但是,如果數據是連續的值,那麼,那不太好...
x BETWEEN 0.000 AND 9.999999999999999999
相反,我使用>= AND <
...
x >= 0 AND x < 10
然而有趣的是,>= AND <
技術實際上適用於都連續和離散數據類型。所以,一般來說,我很少使用BETWEEN
。
謝謝Dems!清理概念 – Deepesh
此外,請勿使用BETWEEN
進行日期/時間範圍查詢。
以下真實含義是什麼?
BETWEEN '20120201' AND '20120229'
有些人認爲,這意味着給我把所有的數據從二月,包括所有的數據隨時在2月29日。以上翻譯爲:
BETWEEN '20120201 00:00:00.000' AND '20120229 00:00:00.000'
因此,如果在午夜後的任何時間29日有數據,您的報告將不完整。
的人也儘量聰明,挑一天「結束」:
BETWEEN '00:00:00.000' AND '23:59:59.997'
,如果數據類型爲datetime
工作。如果是smalldatetime
範圍的末尾會四捨五入,並且您可能包含第二天的數據。如果它是datetime2
,那麼您實際上可能會錯過當天最後2毫秒內發生的一小部分數據。在大多數情況下,統計上不相關,但如果查詢錯誤,則查詢是錯誤的。
因此對於日期範圍查詢,我總是強烈建議使用開放式範圍,例如,到二月份報告WHERE
條款會說「或2月1日之後,和3月1日之前」如下:
WHERE date_col >= '20120201' AND date_col < '20120301'
BETWEEN
可以作爲僅利用date
類型預期,但我還是更喜歡查詢中的開放式範圍,因爲稍後有人可能會更改該基礎數據類型以允許其包含時間。
我的博客上有很多更多的細節在這裏:
- 1. 在SQL CASE中使用BETWEEN where子句
- 2. Excel中的BETWEEN子句
- 3. BETWEEN子句中的SQL
- 4. 與datetime和BETWEEN子句
- 5. 正確做出BETWEEN子句
- 6. 試圖在Where子句中使用IF/CASE語句在Oracle中使用BETWEEN
- 7. SQL服務器:問題與BETWEEN子句
- 8. SQLite的查詢:與BETWEEN子句
- 9. 如何使用SQL BETWEEN子句和GETDATE功能
- 10. 如何在mysql中使用獨佔BETWEEN子句?
- 11. 如何在YII活動記錄中使用IN&Between子句?
- 12. 如何在Kohana ORM中使用BETWEEN子句
- 13. 在兩個LIKE子句之間使用BETWEEN LIKE
- 14. 輸出使用BETWEEN子句缺少名稱SQL
- 15. 如何使用BETWEEN的SQL語句?
- 16. 有沒有辦法在between語句的where子句中使用dateadd()?
- 17. 如何在同一語句中的where子句中使用like和between?
- 18. 使用BETWEEN子句的MySQL查詢可以使用列而不是值嗎?
- 19. FTS3使用「BETWEEN」
- 20. 在子查詢中使用BETWEEN postgres
- 21. BETWEEN子句中的PHP/PDO/MySQL if語句
- 22. WHERE子句中CASE語句中的BETWEEN問題
- 23. 使用between between statement作爲組
- 24. SQL SELECT,CASE,BETWEEN INTO語句
- 25. 使用WHERE和BETWEEN
- 26. 當值來自多個表時,你如何使用SQLite中的WHERE BETWEEN子句?
- 27. 如何在冬眠期間使用between clause子句中的日期
- 28. 我可以在SQL Server中同時使用like和between子句嗎
- 29. SQL查詢多個範圍而不使用多個OR子句(嵌套LIKE,BETWEEN)
- 30. SQL中BETWEEN子句的真正目的是什麼?
他們在性能方面完全相同 - 如果有合適的索引存在,SQL Server將做在這兩種情況下距離掃描。 –
[SQL:BETWEEN vs <= and > =]可能重複(http://stackoverflow.com/questions/1630239/sql-between-vs-and) – GarethD