我需要使用几个ORACLE表来加载第三个表。要加载的总行数约为3000万。我的Insert
SQL查询是INSERT-INTO-<TABLE>-SELECT
。
我的查询挂起(等待30分钟,然后终止会话)。但是,当我在ROWNUM
查询中使用SELECT
值等于结果行总数的ROWNUM
时,INSERT
查询运行了43秒。
而且,两个结果都是一致的。
我在这里完全迷路了。任何人都可以对为什么没有ROWNUM的INSERT查询挂起而为什么使用ROWNUM的INSERT查询运行得更快的问题发表专业意见吗?
详细信息:
原始INSERT查询:
INSERT INTO C
SELECT COLUMN1 FROM A WHERE COLUMN2 IN (SELECT COLUMN1 FROM B);
Data Types involved in the above query are NUMBER.
使用ROWNUM插入查询:
SELECT COUNT(*)
FROM A
WHERE COLUMN2 IN (SELECT COLUMN1 FROM B); -- No issues with this query
INSERT INTO C
SELECT COLUMN1 FROM A
WHERE COLUMN2 IN (SELECT COLUMN1 FROM B) AND ROWNUM <=30,000,000; -- result from the above select query