【发布时间】:2015-08-08 18:37:11
【问题描述】:
我想知道在 sql 中我有一个 WHERE 语句的句子在性能或资源使用方面有什么区别
WHERE VALUE IN (A,B,C .......)
或
WHERE VALUE = A OR VALUE = B OR VALUE = C.....
我想知道这是因为在 Oracle 查询中我必须搜索与此值相关的所有信息。我无法创建临时表。我只是从外部来源收到它们。首先,我虽然将它们放在 IN 子句中一样简单。值的数量是可变的,但从不低于 3000。另一方面,我读到 Oracle 对某种条件的值数量有限制,但到目前为止我从未收到超过 4000。
【问题讨论】:
-
完全没有区别
-
我想这取决于您使用的数据库软件的类型。如果这真的与您相关,您应该使用 EXPLAIN 语句或类似语句来衡量它。然后你会看到解析器是否做得很好并且处理两者是否相同。并且:IN 具有明显的优势,您可以使用 sub select 而不是静态值或可变数量的值。
-
你用的是什么关系型数据库?
-
对此进行了很好的讨论,包括stackoverflow.com/questions/3074713/… 上的真实 MySQL 性能数据stackoverflow.com/questions/6514906/… 上也讨论了 Oracle 的 MS SQL Server 已在stackoverflow.com/questions/2110715/sql-server-select-in-vs-or 上讨论过
-
@rob 关于您已删除答案中的问题,一旦您获得 3k 代表,您可以投票关闭作为骗子。在没有关于 RDBMS 的信息的情况下,目前尚不清楚这些链接中的哪一个是最佳目标!
标签: sql conditional-statements where-clause