虚拟where子句会影响性能

nia*_*hoo 5 sql performance

WHERE 1=1如果您使用脚本(伪代码)编写此请求,会有什么影响:

sql = "SELECT f1,f2,f3 FROM t
       WHERE 1=1" ++ restOfTheClause
Run Code Online (Sandbox Code Playgroud)

在哪里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之间是否存在性能差异?

谢谢

usr*_*usr 5

SQL Server 和 oracle 足够复杂,可以完全删除此子句。作为简化步骤,它被删除。它没有任何性能影响。我不知道其他 RDBMS 的情况。