Oracle Delete 查询优化

Oracle Delete query optimization

DELETE FROM   BATCH_T   WHERE   BatchId   In (  BatchIdList  )    AND   Status   = 'CLOSED'

以上查询需要 3 分钟才能完成。谁能帮我缩短回复时间。

如果批处理列表很小,则考虑将以下索引添加到您的 table:

CREATE INDEX batch_idx ON BATCH_T (BatchId, Status);

如果您的批处理列表很长,请考虑将这些值添加到新的 table BATCH_LIST。然后,确保在这个新 table 上存在以下索引:

CREATE INDEX other_idx ON BATCH_LIST (BatchId);

第一个索引应该对任一版本都有帮助。