首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >在Oracle的vs或OR中,哪个更快?

在Oracle的vs或OR中,哪个更快?
EN

Stack Overflow用户
提问于 2011-06-29 09:38:33
回答 3查看 34.8K关注 0票数 22

我正在开发一个在Oracle数据库中处理许多数据的应用程序。

在某些情况下,我必须根据给定条件列表获取许多对象,我使用的是SELECT ...FROM.. WHERE... IN...,但IN表达式只接受最大为1,000项的列表。

所以我改用OR表达式,但据我观察,这个查询(使用OR)可能比IN (使用相同的条件列表)慢。是对的吗?如果是这样,如何提高查询速度?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-06-29 09:48:05

INOR更可取-- OR的性能是出了名的差,可能会导致在复杂查询中需要使用括号的其他问题。

INOR更好的选择是连接到包含您想要(或不想要)的值的表。此用于比较的表可以是派生的、临时的或已存在于架构中。

票数 28
EN

Stack Overflow用户

发布于 2011-07-05 01:34:04

我会质疑整个方法。SP的客户端必须发送100000个ID。客户端从哪里获得这些ID?发送如此大量的ID作为proc的参数,无论如何都要付出巨大的代价。

票数 2
EN

Stack Overflow用户

发布于 2013-05-17 19:42:28

如果使用主键创建表:

代码语言:javascript
复制
CREATE TABLE my_test (id NUMBER,
CONSTRAINT PK PRIMARY KEY (id));

然后执行相同的SELECT操作,使用多个IN值运行查询,然后通过散列值检索执行计划,得到的结果是:

代码语言:javascript
复制
SELECT STATEMENT
INLIST ITERATOR
INDEX                  RANGE SCAN

这似乎意味着,当您有一个IN列表并将其与PK列一起使用时,Oracle在内部将该列表作为"INLIST“保留,因为处理该列表比将其转换为of更有效,而不是像在无索引表的情况下那样。

我在上面使用的是Oracle 10gR2。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6514906

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档