Oracle FAQ | Your Portal to the Oracle Knowledge Grid |
![]() |
![]() |
Home -> Community -> Usenet -> c.d.o.server -> Re: slow delete sql
arjan wrote:
> Hi there,
>
> I have a delete sql that runs too slow (around 15 mins). I would like
> to improve it.
>
> It looks like this:
>
> delete from table_a a
> where exists (select *
> from table_b b
> where b.columnX = a.columnX
> and b.columnY = a.columnY)
>
> There are two indexes. IndexA on table_a(columnX,columnY) and IndexB
> on table_b(columnX,columnY).
>
> Looking at the statement in explain plan, it shows that it's doing
> full scans on both tables. It's not picking up an index hint like
> this:
>
> delete /*+ INDEX(a IndexA) */ from table_a a
> where exists (select *
> from table_b b
> where b.columnX = a.columnX
> and b.columnY = a.columnY)
>
Stop throwing darts in the dark.
Get facts before proceeding.
Otherwise all you are doing is....
Ready, Fire, Aim!
ALTER SESSION SET SQL_TRACE=TRUE
DELETE....
then go run TKPROF & actually see where Oracle is spending all the time.
Received on Tue Apr 06 2004 - 19:33:00 CDT
![]() |
![]() |