oracle delete query taking too much time

前端 未结 7 704
星月不相逢
星月不相逢 2020-12-05 07:34

I have a query like

DELETE from tablename where colname = value;

which takes awfully long time to execute. What could be the reason? I have

7条回答
  •  执笔经年
    2020-12-05 07:36

    How selective is that index? If your table has one million rows and that value hits one hundred and fifty thousand of them then your index is useless. In fact it may be worse than useless if it is actually being used. Remember, a DELETE is a like a SELECT statement: we can tune its access path.

    Also, deletes take up a lot of undo tablespace, so you might be suffereing from contention, if the system is experiencing heavy use. In a multi-user system another session might have a lock on the rows(s) you want to delete.

    Do you have ON DELETE triggers? Do you have ON DELETE CASCADE foreign key constraints?

    Edit: Given all that you say, and especially the column in question being the primary key so you are attempting to delete a single row, if it is taking a long time it is much more likely that some other process or user has a lock on the row. Is anything showing up in V$LOCK?

提交回复
热议问题