我正在使用此更新查询,这需要大约8小时才能执行,我希望它花费更少的时间,我该怎么做?我的疑问是:
BEGIN
LOOP
UPDATE ENCORE_LIVE.INSTRUMENT_CLASSIFICATION SET CODE = NULL WHERE TYPE_ID =
15 AND CODE is not NULL
and rownum < 50000;
exit when SQL%rowcount < 49999;
commit;
END LOOP;
commit;
END;
答案 0 :(得分:1)
所以你要以50 000条记录的批量更新一张表,对吗?
您应该验证TYPE_ID
表中的列CODE
和INSTRUMENT_CLASSIFICATION
是否已编入索引,并最终创建索引。
同时检查this answer。
您的UPDATE查询是基本的,无论如何都无法优化。要创建索引,您可以使用:
CREATE INDEX instrumentClasification_TypeCode_idx
ON ENCORE_LIVE.INSTRUMENT_CLASSIFICATION
(TYPE_ID, CODE)
此外,您应该考虑在一个批处理中运行更新查询,而无需批量分割。