我有一个名为REF_SERVICE_OFFERING的主表,其中我已有3百万+数据。现在,我想根据某些特定条件更新Java中的3M记录。
我们决定创建一个临时表(其中的记录将用于更新主表)并使用以下查询来更新主表。临时表将保存超过200,000条记录:
UPDATE REF_SERVICE_OFFERING SET
PART_PRICE_BILL_TYPE= TEMP.PART_PRICE_BILL_TYPE,
part_price_unit_type=TEMP.part_price_unit_type,
part_price_allowed_units=TEMP.part_price_allowed_units,
part_price_discount=TEMP.part_price_discount,
part_price_source_id=TEMP.part_price_source_id
FROM REF_SERVICE_OFFERING RSO JOIN ref_offer_temp1 TEMP
ON TEMP.RECORD_NUM = RSO.RECORD_NUM
AND TEMP.SO_NAME = RSO.SO_NAME
AND TEMP.SERVICE_CASE_TYPE = RSO.SERVICE_CASE_TYPE
AND TEMP.WORK_ORDER_TYPE = RSO.WORK_ORDER_TYPE
WHERE (RSO.PART_PRICE_BILL_TYPE IS NOT NULL OR TRIM(RSO.PART_PRICE_BILL_TYPE) NOT LIKE '')
AND (RSO.PART_PRICE_EXCP_SOURCE_ID IS NOT NULL OR TRIM(RSO.PART_PRICE_EXCP_SOURCE_ID) NOT LIKE '')
我们的数据库是Postgres 9.6。但是这个更新花了很多时间而且从未进行过。我们还尝试在临时表中仅转储10k记录,用于更新4L记录。
我们尝试使用EXPLAIN命令并且无法找出原因。
任何帮助都会非常感激。