在存储过程中,我想根据某些条件更新大型数据集,那么什么是更好的:
场景一(一选多if)
Select All Data records then
LOOP
IF (Condition1 == true)
execute update statement
IF (Condition2 == true)
execute update statements
END LOOP
场景2(多选where)
Select Data where (condition 1) loop
execute update statements
end loop
Select Data where (condition 2) loop
execute update statements
end loop
我认为没有一个答案在所有场景(数据库产品、选择查询、输入大小等)中都有效,但请记住:
基于 IF 的解决方案将只有一个选择和一个循环,因此,如果系统在选择记录(非常复杂的查询)上损失更多时间,也许最好进行一个循环。
您的解决方案基于 WHERE,而不是每个条件的一个查询,因此我会避免超过 2 或 3 个条件,除非它是非常非常快的查询(例如,从包含 100 条记录左右的配置表中选择记录)。
另外请记住,您可以将 IF 直接放在 UPDATE 语句中。
一般来说,我会选择 IF (1) 或 (3) 解决方案。