One of the problems with indexes is that too many of them can hamper DML (insert, update, delete) performance. DML operations may require the index to be updated as a result. Too many indexes can cause too much work. So it is wise to not overindex your tables. If you are having problems with INSERT performance, drop any unused indexes.
There is not much you can do for INSERT performance if your INSERT statement is like the following:
INSERT INTO my_table VALUES (1,2,3,4);I have seen some DBAs add more freelists to their table to help INSERT performance, but it is rare that more freelists are required. If there are multiple INSERT statements in your application, then bind variables can definitely help.
Let's suppose your INSERT statement has a subquery, similar to the following:
INSERT INTO my_table SELECT colX, colY, colZ FROM your_table;In this case, you can help your INSERT performance by tuning the subquery. Tune the SELECT statement and your INSERT performance will improve.
Dig Deeper on Oracle database performance problems and tuning
Related Q&A from Brian Peasland
Oracle expert Brian Peasland answers one reader's question about common pitfalls when connecting Oracle to outside programs. Continue Reading
One reader asks expert Brian Peasland a question about datafile sizes with the Oracle RMAN duplicate 10g command. Continue Reading
Managing parent table-child table relations in Oracle SQL environments is key to efficient programming. Continue Reading