如果在脚本(伪代码)中写入此请求,则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在使用伪子句时是否存在性能差异?
谢谢
答案 0 :(得分:3)
SQL Server和oracle非常复杂,可以完全删除此子句。它被删除作为简化步骤。它没有任何冲击力。我不知道其他RDBMS'。
答案 1 :(得分:2)
优化器足够智能,可以意识到1 = 1只需要计算一次,因此性能影响可以忽略不计。