【发布时间】:2020-02-19 13:00:15
【问题描述】:
我有 2 张桌子。一个表是 cr_archive,它有大约 9000000 条记录。它有一个名为 v_sales_person 的列,它没有值。我有另一个名为 table_2 的表,它具有名为 v_sales_person 的相同列,其中有值。两个表都有名为 product_label、account_num 的列。我想从表 _2 中选择与 cr_archive 具有相同 product_labels 和 account_num 的数据,并使用 table_2 中满足上述条件的值更新 cr_archive 中的 v_sales_person 列(使用 oracle)。我尝试了以下查询。
update cr_archive a
set a.v_sales_person = (select distinct b.v_sales_person from table_2 b where a.account_num = b.account_num and A.PRODUCT_LABEL=b.PRODUCT_LABEL )
/
commit
/
但是查询需要超过 6 个小时来处理并且不知道它是否给出了输出。我有 2 个问题。 1.上述查询是否正确? 2. 有什么方法可以优化上面的查询。
【问题讨论】:
-
你能发布一个执行计划和DDL吗?如果您要更新 9.000.000 行,则索引很重要。此外,“distinct”可能不是您想要的。
标签: sql oracle query-optimization