SQL之间的差异在运算符和“> =”&“<=”运算符之间

问题描述:

我们使用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

现代数据库附带非常聪明的查询执行优化器。他们的主要特征之一是查询转换。 逻辑上等价的表达式通常可以相互转换。例如正如安东尼所说,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

不这样做没有区别(使用ORACLE时),但使用BETWEEN运算符是比较范围值的更优雅方式。

没有区别。

(x BETWEEN y AND z) 

是一样的书写

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

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