Oracle SQL in子句-速度慢

时间:2018-08-09 14:12:52

标签: sql oracle

以下查询1的速度确实很慢。

select * from my_table
where col1 in (
    ... multiple complicated joins ...
);

假设(多个复杂的联接)返回1,2,...,50并且运行速度很快。

  ... multiple complicated joins ...

通过用其输出替换联接,下面的Query2的运行速度也快得多。

select * from my_table
where col1 in (
    1,2,...,50
);

是否可以将(多个复杂的联接)的输出插入到类似列表的变量中?

select * from my_table
where col1 in &col1_list;

my_table:2G表和col1未编制索引

多个复杂的联接:在1秒钟内返回大约50个值

查询1:运行时间= 5分钟

查询2:运行时间= 2秒

注意:我仅对数据库具有读取权限,因此无法创建任何临时表。

1 个答案:

答案 0 :(得分:1)

如何加入复杂的联接。

SELECT * FROM MY_TABLE mt JOIN (... multiple complicated joins ...)temp on temp.col = mt.col1