有效的方法来检查表X中是否存在35K +行,其中包含700,000多行?

时间:2014-02-17 08:35:48

标签: sql oracle

我在平面文件中有35K +记录(比如A列)。我必须检查表X中是否已存在这些记录(具有700000多条记录)

  • 列A不是表X中的索引列。我在平面文件中没有任何以X编制索引的列。

- 我不能在SELECT中使用IN运算符,因为对于35+记录来说它不是一个可行的选项(成本高,限制为1K) - 所有记录都有类似的模式,所以我在SELECT中使用LIKE运算符尝试了模式匹配,但效率非常低。 (X中具有相似模式的记录数量为120000+) - 我没有create table特权来插入新表并减去等等。

我是甲骨文的新手,如果这个问题很天真,我很抱歉。此外,我搜索了类似的问题,无法找到非索引列的答案。

有人可以帮助我吗?

1 个答案:

答案 0 :(得分:1)

平面文件是指CSV或TSV等文本文件?如果它只是一个文本文件,请将其加载到数据库中。也许你可以为这份工作创建一个临时表。然后您可以使用以下查询:

select * 
from x
where (c1, c2, ...) in (select c1, c2, ... from a);