【发布时间】:2017-09-11 09:32:41
【问题描述】:
查询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 引擎之间会有两个上下文切换。您能否解释一下在更新批量数据时会优化哪个查询
【问题讨论】:
-
mySQL sql-server,你提到了 PLSQL,它建议使用 Oracle。它是哪一个?不要标记未涉及的产品。
-
a) 你为 mysql 和 (ms)-sql 服务器标记了这个问题,但不是 oracle b) 你的两个代码段做的事情不一样 c) 绝对没有使用批量收集这种情况(所以使用查询 1 就可以了) d) 如果您想询问不同的情况,请询问不同的(实际)情况。
标签: mysql sql-server database