条款对性能的影响

时间:2013-12-12 09:42:01

标签: sql performance

如果在脚本(伪代码)中写入此请求,则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在使用伪子句时是否存在性能差异?

谢谢

2 个答案:

答案 0 :(得分:3)

SQL Server和oracle非常复杂,可以完全删除此子句。它被删除作为简化步骤。它没有任何冲击力。我不知道其他RDBMS'。

答案 1 :(得分:2)

优化器足够智能,可以意识到1 = 1只需要计算一次,因此性能影响可以忽略不计。