2011-06-15 104 views
5

我們使用SQL查詢來根據dateFrom和dateTo字段進行搜索。因爲我使用的「大於等於(> =)」和「」小於等於(< =)「運算符來搜索日期字段。某處我還發現我們也可以使用SQL「」之間的「操作符來做同樣的事情。只是想確認當我們使用「之間」運營商和當我們使用「(> = & < =)」運營商時是否有任何區別。SQL之間的差異在運算符和「> =」&「<=」運算符之間

+1

的數據庫供應商您使用的?它有所作爲。 – 2011-06-15 07:24:40

+0

@ j.w.r我正在使用MYSQL進行開發,對於生產它是Oracle。 – 2011-06-15 07:31:18

+0

Informix,DB2,PostreSQL,MySQL,Sqlite,MS Sql Server,Oracle ...都是包容性的,但是我可以發誓有一個並不是一個點。所以,正如其他人所指出的那樣,你應該沒問題。 :) – 2011-06-15 07:42:38

回答

3

現代數據庫附帶非常聰明的查詢執行優化器。他們的主要特徵之一是查詢轉換。 邏輯上等價的表達式通常可以相互轉換。例如正如安東尼所說,BETWEEN算子可以被Oracle(和MySQL)重寫爲兩個AND連接的比較,反之亦然,如果BETWEEN不只是作爲語法糖實現的話。所以即使會有差異(在性能上),您也可以放心,Oracle很可能會選擇更好的選項。

這意味着您可以自由選擇您的偏好,例如由於可讀性。

注意:它並不總是顯而易見的,在邏輯上等價。查詢轉換規則在轉換時變得更復雜EXISTS,IN,NOT EXISTS,NOT IN ......但在這種情況下,它們是。有關詳細信息讀取規格(謂語之間章節8.3):

http://www.contrib.andrew.cmu.edu/~shadow/sql/sql1992.txt

+0

謝謝@盧卡斯埃德爾 – 2011-06-15 09:13:51

3

不這樣做沒有區別(使用ORACLE時),但使用BETWEEN運算符是比較範圍值的更優雅方式。

5

沒有區別。

(x BETWEEN y AND z) 

是一樣的書寫

((x >= y) AND (x <= z)) 
+0

謝謝@AnthonyFaull – 2011-06-15 07:35:07

相關問題