Oracle FAQ | Your Portal to the Oracle Knowledge Grid |
![]() |
![]() |
Home -> Community -> Usenet -> c.d.o.misc -> Insert statement taking a very long time to complete
[I recently posted this on .server; I apologize for the double-
posting.]
I'm having some trouble with an SQL insert statement taking waaay too long to run. It's been suggested that maybe I'm using inefficient SQL, and that there might be a faster way to achieve the results.
I have two tables with identical structure, and I want to copy all records that exist in table A but not in table B, into table B.
Assuming that the structure is primary key "pk" and data fields "f1", "f2" and "f3", here is the SQL statement I'm using:
insert into tableb(pk, f1, f2, f3)
(select * from tablea where tablea.pk not in (select pk from
tableb))
This statement has worked well for small amounts of data, but when I tried on a table with approximately 200k records, it took forever to finish.
A coworker with some SQL experience thinks that the "where" clause is being executed for *every* insertion. If so, this could certainly account for much of the slowdown.
Anyone have any suggestions?
-- John Gordon A is for Amy, who fell down the stairs gordon_at_panix.com B is for Basil, assaulted by bears -- Edward Gorey, "The Gashlycrumb Tinies"Received on Tue Mar 20 2007 - 10:16:34 CDT
![]() |
![]() |