oracle删除查询花费了太多时间

Aja*_*jay 25 sql oracle

我有一个查询

DELETE from tablename where colname = value;
Run Code Online (Sandbox Code Playgroud)

这需要很长时间才能执行.可能是什么原因?我有一个关于colname的索引.

Vin*_*rat 31

可能有几个解释为什么您的查询需要很长时间:

  1. 您可能被另一个会话阻止(最有可能).在删除之前,您应该确保没有其他人锁定行,例如:issue SELECT NULL FROM tablename WHERE colname=:value FOR UPDATE NOWAIT,
  2. 可能有一个ON DELETE TRIGGER额外的工作,
  3. 检查是否UNINDEXED REFERENCE CONSTRAINTS指向此表(AskTom中有一个脚本可帮助您确定是否存在此类未编制索引的外键).

  • 第三个是解决方案:).现在它在2秒内执行! (2认同)

Wae*_*oul 5

可能与您的表相关的多个表具有巨大的行数。