我正面临一项任务,我可以在整个嵌套 SQL 和多个语句的 SQL 过程中实现。我想知道我应该根据性能选择哪一个,以及如何评估和比较它们。
这是我的情况。我的一些客户更改了他们的名字,我的任务是通过包含OLD_NAME和NEW_NAME的MAPPING表来更新我的CUSTOMER表的NAME列。
我可以写一个嵌套的 SQL
update CUSTOMER set NAME = (select NEW_NAME from MAPPING where OLD_NAME = NAME)
where NAME in (select OLD_NAME from MAPPING)
带循环和条件的查询过程
for record as
select NAME from CUSTOMER
do
select NEW_NAME into newName from MAPPING where OLD_NAME = record.NAME;
if newName is not NULL then
update CUSTOMER set NAME = newName where NAME = record.NAME;
end if;
end do;
当然,对于第二个,我最好用prepare和execute来缓存update语句。
我的问题是哪个更好。或者两个都很笨,那你能给我一个更好的吗?我可以知道如何分析他们的表现吗?
就个人而言,我认为过程一更好,因为嵌套 SQL 必须扫描 MAPPING 表两次(where & set 子句),但我不确定。