| Author |
Insert statement very heavy
|
Murad Iqbal
Ranch Hand
Joined: Dec 09, 2003
Posts: 90
|
|
Hi all, I am calling an Oracle stored procedure which runs an Insert statement on a 23 column table. The values supplied to the Insert are through a select statement that collects required data from different tables, does some string concatenation, uses TO_CHAR, Decode, NVL functions and a mixture of all to create values for individual columns. The Select statement also contains a Where clause which does 3 comparisons all of which should be true i.e. (condition AND condition AND condition). One of the conditions looks like this TO_CHAR(purhc_dt,'DDMMYYYY')||accountnum||corp = trans_id. The select may return several records, potentially 10-100, which are then inserted. The result, as expected, the statement is very heavy on the Oracle db and it took ages to do anything before finally running out of temporary tablespace. Any comments/suggestions how to improve this? Regards, Murad.
|
 |
Jeanne Boyarsky
internet detective
Marshal
Joined: May 26, 2003
Posts: 26201
|
|
Murad, Have you tried running SQL explain to see where all the time goes?
|
[Blog] [JavaRanch FAQ] [How To Ask Questions The Smart Way] [Book Promos]
Blogging on Certs: SCEA Part 1, Part 2 & 3, Core Spring 3, OCAJP, OCPJP beta, TOGAF part 1 and part 2
|
 |
Shailesh Chandra
Ranch Hand
Joined: Aug 13, 2004
Posts: 1076
|
|
Originally posted by Murad Iqbal: One of the conditions looks like this TO_CHAR(purhc_dt,'DDMMYYYY')||accountnum||corp = trans_id. The select may return several records, potentially 10-100, which are then inserted. The result, as expected, the statement is very heavy on the Oracle db and it took ages to do anything before finally running out of temporary tablespace. Any comments/suggestions how to improve this?
It would be to quick to give any suggestion until we don't see your query but using any function on a column then a comparsion is definetely going to make your select very slow, you need to tune to query first consult your DBA. For a instance let say you have 10K rows in your table and you want to insert 5 out of them which has some desired purhc_dt. now using TO_CHAR(purhc_dt,'DDMMYYYY') will convert the all 10,000 rows to string them compare to your desire date. You need to avoid using function this way. Think about a exaple below A query like this will be a number of times faster than a query you sampled above. Shailesh
|
Gravitation cannot be held responsible for people falling in love ~ Albert Einstein
|
 |
 |
|
|
subject: Insert statement very heavy
|
|
|