时,哪些查询将优化。
query1:
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程序的一部分。假设两个查询都有要更新的批量数据。我的理解是,对于第一个查询,更新将一一进行,而对于第二个查询,有可能更快的批量收集。但是,SQL和PLSQL引擎之间将有两个上下文切换。您能说明当大量数据更新
在这两个选项中,第一个查询将更有效,更快。
从您的第一个查询开始,很明显,您只需要根据过滤器标准更新表中的数据即可。这可以在SQL本身中轻松完成,而无需首先将数据加载到集合中,然后更新。
如果您必须在桌子的每一行采取一些措施,则批量收集将代替光标。