表现:DELETE vs FORALL

时间:2014-05-05 15:17:28

标签: sql oracle plsql

什么有更好的表现?

像这样删除:

    DELETE FROM users WHERE attr IN (SELECT * FROM TABLE(attrs));

或像这样的FORALL:

    FORALL i IN 1..attrs.COUNT DELETE FROM users WHERE attr = attrs(i);  

1 个答案:

答案 0 :(得分:0)

在这种简单的情况下,

DELETE 更快,更合适。 OP可能忽略了可以使用简单的DELETE一次删除多个记录。

FORALL DELETEDELETE内的FOR LOOP好,它可以避免在PL / SQL和SQL之间切换上下文。实际上, FORALL使用BULK BINDING