我一直在网上搜索,我很惊讶到处都能看到同样的例子,而且总是 all_objects。不擅长高级 SQL,我不明白如何将此语句转换为使用 BULK_COLLECT。
INSERT INTO bpm_staging (
id, pay_obj, merchant, address,
city, country,debit_num, first_name,
state, zip, id_type,bank_no)
SELECT
p.account_obj, p.id, p.ach, pc.address,
pc.city, pc.country, pc.debit_num, pc.name,
pc.state, pc.zip, p.id_type,pc.bank_no
FROM au_pay_t p, au_pay_dd_t pc
WHERE p.id= pc.obj;
我使用上面的语句是因为,使用游标需要更长的时间。对于必须修改查询的任何人来说,使用 Select 也更容易理解。
但是,我的 DBA 拒绝在生产环境中运行,因为这需要很长时间才能逐行插入 540K 记录。
当我在网上搜索时,我发现 BULK_COLLECT /FORALL 就性能而言是更好的选择。
请提出更好的解决方法。如果 BULK_COLLECT 是一个不错的选择,那么请推荐一个很好的例子。