查询1:
UPDATE employee
SET key1 = NULL,
status = 'COMPLETE'
WHERE key2 = <someId>
and status IN ('APPROVED','AVAILABLE','UNPAID');
查询2:
SELECT employee_id
BULK COLLECT INTO l_Ids
FROM employees
WHERE key1 = <somekey> -- Bug 26721012
and status IN ('APPROVED','AVAILABLE','UNPAID');
FORALL i IN 1 .. l_Ids.COUNT
UPDATE employees
SET key1 = NULL, -- Bug 26721012
status = 'COMPLETE'
WHERE invoice_id = l_Ids(i).employee_id;}`
这篇文章是PLSQL程序的一部分。让我们假设两个查询都有要更新的批量数据。我的理解是,对于第一个查询,更新将逐个进行,而对于第二个查询,BULK collect可能更快。但是,在sql和plsql引擎之间会有两个上下文切换。您能否解释一下在更新批量数据时哪个查询会优化
答案 0 :(得分:0)
在这两个选项中,第一个查询会更高效,更快。
从您的第一个查询中可以清楚地看到,您只需要根据过滤条件更新表格中的数据。这可以在SQL本身轻松完成,无需先在集合中加载数据,然后再更新它。
如果您必须对表格的每一行采取某些操作,则可以使用批量收集代替游标。