Oracle FAQ | Your Portal to the Oracle Knowledge Grid |
Home -> Community -> Usenet -> c.d.o.server -> Re: Should I use an /*+ append */ hint here???
Comments in-line.
-- Regards Jonathan Lewis http://www.jlcomp.demon.co.uk Coming soon one-day tutorials: Cost Based Optimisation Trouble-shooting and Tuning Indexing Strategies (see http://www.jlcomp.demon.co.uk/tutorial.html ) ____UK_______March 19th ____USA_(FL)_May 2nd Next Seminar dates: (see http://www.jlcomp.demon.co.uk/seminar.html ) ____USA_(CA, TX)_August The Co-operative Oracle Users' FAQ http://www.jlcomp.demon.co.uk/faq/ind_faq.html Sybrand Bakker wrote in message ...Received on Fri Feb 07 2003 - 02:40:26 CST
>
>Using the append hint will leave your indexes in invalid state and in
>need to be rebuild.
>
The insert /*+ append */ hint does not leave indexes invalid, it merely loads the table above the high water mark, sorts the new index entries into order and applies them through the normal undo/redo tracking mechanism.
>You would better look into bulk inserts (depending on version, which
>no one mentions), as you are now inserting one record at a time, and
He is not doing single row processing - he is doing an "insert ... select" a couple of thousand times, and explains that each pass of this call inserts between 0 and 3,000 rows. A simple change to array processing method is unlikely to improve on the average 1,500 rows per call. IF he can replace the couple of thousand individual "insert/selects" with a single call, then he should get some benefit. If he can truncate the table before the insert, then using /*+ append */ as well will be safe, as the highwater mark won't then be pushed up on each insert, and he will get the benefit of an optimised index load.