performance - Oracle,使用子选择时性能低下

标签 performance oracle

如果您获取所有行,我的 View 会非常慢。但如果我选择一个子集(在 where 子句中提供 ID),性能会非常好。我无法对 ID 进行硬编码,因此我创建了一个子选择来从另一个表中获取 ID。子选择仅返回一个ID。现在性能非常慢,看起来 Oracle 在使用 where 子句之前正在评估整个 View 。我可以以某种方式帮助 Oracle 让 SQL 2 和 3 具有相同的性能吗?我正在使用 Oracle 10g

1 慢

从 ci.my_slow_view 选择 *

2快

从 ci.my_slow_view 中选择 *,其中 id = 1;

3慢

select * from ci.my_slow_view where id in (select id from active_ids)

最佳答案

怎么样

select * from ci.my_slow_view where id = (select id from active_ids)

用“=”替换“in”将告诉 Oracle 您希望“select id from active_ids”仅返回一行。

关于performance - Oracle,使用子选择时性能低下,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2957637/

相关文章:

python - 在 GAE 上发送/存储数据的最有效/最便宜的方式

c# - 缓存反射属性 getter/setter 的最佳方式?

sql - TO_CHAR函数逻辑<<数字格式>>

sql - 使用 ifs 包含无限间隔的日期范围

linux - 使用 oracle 以外的其他 linux 用户连接到 sqlplus

python - Tensorflow:为什么我的代码运行越来越慢?

mysql - 为什么这个查询需要这么多时间以及如何加快速度?

c++ - 为什么在我的计算机上没有 g++ 中的 -O2 时 sqrt 会变得更快?

java - Hibernate Criteria.setMaxResults() 在 Oracle 11g 上失败

oracle - 有没有办法动态创建表和一些初始分区?