sql - 虚拟 where 子句对性能的影响

标签 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 在使用虚拟子句时是否有性能差异?

谢谢

最佳答案

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

关于sql - 虚拟 where 子句对性能的影响,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20539838/

相关文章:

mysql - 没有子查询的 MySQL 中的条件左连接

sql语法、计数、分组依据和添加语句

C# if/return 或 if/return/else 更好?

python - 为什么 Python 和 Ruby 这么慢,而 Lisp 实现却快?

mysql - 通过删除 SQL 数据库中的行来提高查询性能?

sql - SQL 中的慢速选择查询,表中只有 200 万条记录

sql - 如何使用 HIVE 在 WHERE 语句中对 OR 子句进行分组

Mysql 仅重命名 URL 结尾

php - 在大型 mysql 数据库上按 rand() 排序

performance - switch 和 if 一样糟糕吗?