【发布时间】:2016-05-12 05:10:32
【问题描述】:
我需要做以下事情
UPDATE TABLE2 t2
SET t2.product_id = (select t1.product_id from
table1 t1 where t1.matching_id = t2.matching_id)
除了 TABLE2 有 2700 万条记录。 product_id 是一个新添加的列,因此向其填充数据。 我可以使用游标,将 TABLE2 中的记录集分解为相当小的数字,但是有 2700 万条记录,我不确定最好的方法是什么。 请建议,即使这意味着将我的数据导出到 Excel。
更新 - 匹配的列也被编入索引。
【问题讨论】:
-
我认为这是正确的方法,只要您有一个正确的
matching_id索引。你试过了吗?有什么错误吗? -
300 万条记录,耗时 30 分钟。我没有尝试2700万。如果需要 30*9 分钟不可行:)
-
你有matching_id的索引吗?在两张桌子上
-
table1的大小是多少? -
如果时间不是一个约束,将其包装到 DBMS_JOB 或 DBMS_SCHEDULER(参见CREATE_JOB)并让它运行。
标签: oracle performance plsql oracle11g