有WHERE 1=1
有什么作用如果您在脚本(伪代码)中编写此请求:
sql = "SELECT f1,f2,f3 FROM t
WHERE 1=1" ++ restOfTheClause
哪里
restOfTheClause
可以是与 AND
连接的字段名称/运算符/值列表:restOfTheClause =
[('f4','>',5), ('f5','IN(1,2,3)'), ('f10','=',1)].map(writeWherePart).join(' AND ')
写作
WHERE 1=1
允许编写更简单的代码,因为您不必检查您的 restOfTheClause
是否为空等。该条款对性能有什么影响?
拥有
WHERE 1=1
和有什么区别并且根本没有 where 子句?我在 Oracle 工作了几个月,我发现我必须把
WHERE 1=1
但其他 RDBMS 接受 WHERE true
.如 =
是操作符,oracle 和其他 RDBMS 在使用虚拟子句时是否有性能差异?谢谢
最佳答案
SQL Server 和 oracle 足够复杂,可以完全删除此子句。作为简化步骤,它被删除。它没有任何性能影响。我不知道其他 RDBMS 的情况。
关于sql - 虚拟 where 子句对性能的影响,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20539838/