选择ID必须在列表中的位置

时间:2016-08-18 01:02:25

标签: sql oracle

我有一个我想要从桌子上拿下的ID列表。我也有一个定义类型,如下所示

CREATE OR REPLACE TYPE "NUMBER_TABLE" as table of number;

所以基本上只是一个数字数组。

我想要做的是使用number_table从表中获取具有匹配主键的所有行。在代码中,类似

select tbl.*
from tbl_myTable tbl
where tbl.id in (select * from table(number_table(12345)))

这有效,但运行速度比

慢得多
select tbl.*
from tbl_myTable tbl
where tbl.id in (12345)

查看解释计划报告,这是“(12345)中的tbl.id”的解释计划

enter image description here

以下是“tbl.id in(select * from table(number_table(12345)))”的解释计划 enter image description here

在某些重要领域似乎造成了无端的放缓。无论如何使用这样的索引扫描的id列表?

感谢。

0 个答案:

没有答案