IN与OR,哪个更快?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (32)

我正在开发一个处理Oracle数据库中许多数据的应用程序。 在某些情况下,我必须根据给定的条件列表获取许多对象,然后使用SELECT ...FROM.. WHERE... IN...IN表达式,但该表达式只接受一个最大为1,000个项目的列表。

所以我使用OR表达式来代替,但正如我所观察到的 - 也许这个查询(使用OR)比IN(使用相同的条件列表)慢。这样对吗?如果是这样,如何提高查询速度?

提问于
用户回答回答于

IN更可取

比任何更好的选择IN或者OR是加入到包含要(或不想)的值的表。这张用于比较的表格可以是派生的,临时的,或者已经存在于你的模式中。

用户回答回答于

在这种情况下,我会这样做:

  1. 创建一个列全局临时表
  2. 用外部来源的列表填充此表格(并快速完成另一整个讨论)
  3. 通过将临时表加入另一个表来执行查询(考虑动态采样,因为临时表将不具有良好的统计信息)

这意味着你可以将排序保留到数据库并写入一个简单的查询。

扫码关注云+社区