473,396 Members | 1,785 Online
Bytes | Software Development & Data Engineering Community
Post Job

Home Posts Topics Members FAQ

Join Bytes to post your question to a community of 473,396 software developers and data experts.

Stored procedure performance (DELETES VERY SLOW)

Hi,

Can someone recommend a better approach, I already have clustered
indexes on the t1 column in table td.
This takes more than 30 hours to complete!!

The slowdown is with deletes within the LOOP/END LOOP

TIA,
Kums

--delete old records
CREATE PROCEDURE DELETE_SP()
RESULT SETS 1 LANGUAGE SQL
BEGIN
DECLARE v_update_flag INTEGER;
SET v_update_flag = 0;
DELETE FROM td;

INSERT INTO td ( PK )
SELECT distinct leadseq As PK FROM assignment WHERE
created < CURRENT TIMESTAMP - 24 MONTHS;
UPDATE td SET T1 = 'assignmentleadseq';

SELECT count(*) INTO v_update_flag FROM td;

IF v_update_flag 0 THEN

BEGIN

INSERT INTO td ( T1, PK )
SELECT 'assignmentseqid' As T1, seqid As PK
FROM assignment WHERE leadseq IN
(SELECT PK FROM td WHERE T1 =
'assignmentleadseq' );
COMMIT ;
INSERT INTO td ( T1, PK )
SELECT 'mapresult' As T1, id As PK FROM
mapresult WHERE assignmentseq IN
(SELECT PK FROM td WHERE T1 =
'assignmentseqid');
COMMIT ;
INSERT INTO td ( T1, PK )
SELECT 'executerulecommand' As T1, id As PK
FROM executerulecommand WHERE mapresultid IN
(SELECT PK FROM td WHERE T1 =
'mapresult');
COMMIT ;
INSERT INTO td ( T1, PK )
SELECT 'progressstatus' As T1,
progress_status_id As PK FROM command WHERE id IN
(SELECT PK FROM td WHERE T1 =
'executerulecommand');
COMMIT ;
INSERT INTO td ( T1, PK )
SELECT 'leadexseq' As T1, leadexseq As PK FROM
lead WHERE seqid IN
(SELECT PK FROM td WHERE T1 =
'assignmentleadseq');
COMMIT ;
INSERT INTO td ( T1, PK )
SELECT 'needsid' As T1, needsid As PK FROM lead
WHERE seqid IN
(SELECT PK FROM td WHERE T1 =
'assignmentleadseq');
COMMIT ;
INSERT INTO td ( T1, PK )
SELECT 'detailid' As T1, detailid As PK FROM
lead WHERE seqid IN
(SELECT PK FROM td WHERE T1 =
'assignmentleadseq');
COMMIT ;
LOOP

DELETE FROM command WHERE id IN
(SELECT PK FROM td WHERE T1 =
'executerulecommand');
COMMIT ;
DELETE FROM executerulecommand WHERE id IN
(SELECT PK FROM td WHERE T1 =
'executerulecommand');
COMMIT ;
DELETE FROM progress_status WHERE id IN
(SELECT PK FROM td WHERE T1 =
'progressstatus');
COMMIT ;
DELETE FROM simpleconditional WHERE result IN
(SELECT PK FROM td WHERE T1 =
'mapresult');
COMMIT ;
DELETE FROM mappredicate WHERE rowbp IN
(SELECT id FROM maprow WHERE result IN
(SELECT PK FROM td WHERE T1 =
'mapresult') );
COMMIT ;
DELETE FROM maprow WHERE result IN
(SELECT PK FROM td WHERE T1 =
'mapresult');
COMMIT ;
DELETE FROM mapresult WHERE id IN
(SELECT PK FROM td WHERE T1 =
'mapresult');
COMMIT ;
DELETE FROM assignmentattachments WHERE
assignmentseq IN
(SELECT PK FROM td WHERE T1 =
'assignmentseqid');
COMMIT ;
DELETE FROM leadobserver WHERE assignseq IN
(SELECT PK FROM td WHERE T1 =
'assignmentseqid');
COMMIT ;
DELETE FROM mapdestinations WHERE
suggestedassignid IN
(SELECT id FROM suggestedassignment
WHERE assignment_seqid IN
(SELECT PK FROM td WHERE T1 =
'assignmentseqid') );
COMMIT ;
DELETE FROM mapdestinations WHERE mapresultid
IN
(SELECT PK FROM td WHERE T1 =
'mapresult');
COMMIT ;
DELETE FROM suggestedassignment WHERE
assignment_seqid IN
(SELECT PK FROM td WHERE T1 =
'assignmentseqid');
COMMIT ;
DELETE FROM productinterest WHERE leadseq IN
(SELECT PK FROM td WHERE T1 =
'assignmentleadseq');
COMMIT ;
DELETE FROM sale WHERE seqid IN
(SELECT saleid FROM leadsales WHERE
leadid IN
(SELECT PK FROM td WHERE T1 =
'assignmentleadseq') );
COMMIT ;
DELETE FROM leadsales WHERE leadid IN
(SELECT PK FROM td WHERE T1 =
'assignmentleadseq');
COMMIT ;
DELETE FROM assignment WHERE seqid IN
(SELECT PK FROM td WHERE T1 =
'assignmentseqid');
COMMIT ;
DELETE FROM lead WHERE seqid IN
(SELECT PK FROM td WHERE T1 =
'assignmentleadseq');
COMMIT ;
DELETE FROM leadextensions WHERE seqid IN
(SELECT PK FROM td WHERE T1 =
'leadexseq');
COMMIT ;
DELETE FROM historyrecord WHERE objectid IN
(SELECT PK FROM td WHERE T1 =
'detailid');
COMMIT ;
DELETE FROM notes WHERE objectid IN
(SELECT PK FROM td WHERE T1 =
'detailid');
COMMIT ;
DELETE FROM notes WHERE objectid IN
(SELECT PK FROM td WHERE T1 =
'needsid');
COMMIT ;
DELETE FROM detail WHERE seqid IN
(SELECT PK FROM td WHERE T1 =
'detailid');
COMMIT ;
DELETE FROM detail WHERE seqid IN
(SELECT PK FROM td WHERE T1 =
'needsid');

COMMIT ;
END LOOP;
END;
END IF;


END

Dec 4 '06 #1
2 2094
How about create addditional index?
CREATE INDEX td_T1PK ON td (T1, PK);

And, why you are using LOOP? I couldn't find any statement to exit the
loop(Ex: LEAVE, RETURN).

Dec 4 '06 #2

Tonkuma wrote:
How about create addditional index?
CREATE INDEX td_T1PK ON td (T1, PK);

And, why you are using LOOP? I couldn't find any statement to exit the
loop(Ex: LEAVE, RETURN).
I did not understand the LOOP portion as well. May be it is specific to
SQL/PL??!!

I did a online reorg and rebind on the package for the SP while it was
running in the 17th hour, and it completed in 2 hours. Will know more
in next week's run.

Dec 5 '06 #3

This thread has been closed and replies have been disabled. Please start a new discussion.

Similar topics

4
by: Michael Trosen | last post by:
Hi Everyone, I hope someone can help, I'm pretty new to pro*c programming. I have the following application setup: a pro*c program calls a stored procedure and recieves a cursor back: the...
4
by: deprins | last post by:
Hello, I have wrote a stored procedure but its real slow. Its activated by a button on web page but its takes to long to process and the web server gives a timeout message after 5 minutes. Is...
0
by: Amber | last post by:
Stored procedures are faster and more efficient than in-line SQL statements. In this article we will look at two SQL Server stored procedures; one using an input parameter and one not, and see how...
5
by: Guoqi Zheng | last post by:
Dear sir, I am about to finish a new asp.net application, I used a lot of ms sql stored procedure. Those stored procudure I think is the most important part of the application. Now I am about...
45
by: John | last post by:
Hi When developing vb.bet winform apps bound to sql server datasource, is it preferable to use SELECTs or stored procedure to read and write data from/to SQL Server? Why? Thanks Regards
28
by: mooreit | last post by:
The purpose for my questions is accessing these technologies from applications. I develop both applications and databases. Working with Microsoft C#.NET and Microsoft SQL Server 2000 Production and...
1
by: E.T. Grey | last post by:
I have been busting my nut over this for pretty much most of the day and it is driving me nuts. I posted this to an mySQL ng yesterday and I have not had any response (I'm pulling my hair out...
5
by: Nesa | last post by:
I have a stored procedure that wraps a moderately complex query over 5, 6 related tables. The performance of the procedure is unacceptably slow as it takes on average 5-10 min to complete. To...
5
by: FP | last post by:
Hi, i have read that with Visual Studio 2005 it's possible to create stored procedures and triggers for a Sql Server 2005 database. I must admit that i have already written the stored procedures...
0
by: Charles Arthur | last post by:
How do i turn on java script on a villaon, callus and itel keypad mobile phone
0
by: emmanuelkatto | last post by:
Hi All, I am Emmanuel katto from Uganda. I want to ask what challenges you've faced while migrating a website to cloud. Please let me know. Thanks! Emmanuel
0
BarryA
by: BarryA | last post by:
What are the essential steps and strategies outlined in the Data Structures and Algorithms (DSA) roadmap for aspiring data scientists? How can individuals effectively utilize this roadmap to progress...
1
by: nemocccc | last post by:
hello, everyone, I want to develop a software for my android phone for daily needs, any suggestions?
1
by: Sonnysonu | last post by:
This is the data of csv file 1 2 3 1 2 3 1 2 3 1 2 3 2 3 2 3 3 the lengths should be different i have to store the data by column-wise with in the specific length. suppose the i have to...
0
by: Hystou | last post by:
There are some requirements for setting up RAID: 1. The motherboard and BIOS support RAID configuration. 2. The motherboard has 2 or more available SATA protocol SSD/HDD slots (including MSATA, M.2...
0
Oralloy
by: Oralloy | last post by:
Hello folks, I am unable to find appropriate documentation on the type promotion of bit-fields when using the generalised comparison operator "<=>". The problem is that using the GNU compilers,...
0
by: Hystou | last post by:
Overview: Windows 11 and 10 have less user interface control over operating system update behaviour than previous versions of Windows. In Windows 11 and 10, there is no way to turn off the Windows...
0
tracyyun
by: tracyyun | last post by:
Dear forum friends, With the development of smart home technology, a variety of wireless communication protocols have appeared on the market, such as Zigbee, Z-Wave, Wi-Fi, Bluetooth, etc. Each...

By using Bytes.com and it's services, you agree to our Privacy Policy and Terms of Use.

To disable or enable advertisements and analytics tracking please visit the manage ads & tracking page.