Please start any new threads on our new
site at https://forums.sqlteam.com. We've got lots of great SQL Server
experts to answer whatever question you can come up with.
Author |
Topic |
rahulm_32003
Starting Member
7 Posts |
Posted - 2012-09-04 : 00:44:47
|
Can some one guide me to rewrite the following procedure to improve its performance(reduce its execution time)CREATE procedure TRANS_DELETE @startDate1 datetime, @endDate1 datetime, @boolean1 numeric(1) as--Variables to keep track of record countsDECLARE @processed numeric(20)DECLARE @expected numeric(20)DECLARE @expected2 numeric(20)DECLARE @totalExpected numeric(20)DECLARE @notProcessed numeric(20)--Initialize the record count variablesSET @processed = 0SET @expected = 0SET @expected2 = 0SET @TotalExpected = 0SET @notProcessed = 0--Retrieve the count of records to be deleted SELECT @expected = COUNT(TRANS_ID) FROM TRANSWHERE SCHEDULED = 1 AND PRACTICE_MODE = @boolean1--If there was an error then return right awayIF (@@ERROR <> 0)BEGINRETURNENDSELECT @expected2 = COUNT(SECURITY_OVERRIDE_LOG_ID) FROM SECURITY_OVERRIDE_LOGWHERE (TRANSACTION_NUMBER = '') AND (START_DATETIME >= @startDate1 AND START_DATETIME <= @endDate1)--If there was an error then return right awayIF (@@ERROR <> 0)BEGINRETURNENDSET @totalExpected = @expected+@expected2IF (@totalExpected > 0) BEGINDELETE FROM TRANS_ASSOCIATE WHERE TRANS_ID IN (SELECT TRANS_ID FROM TRANSWHERE SCHEDULED = 1 AND ALLOWED = 1 AND PRACTICE_MODE = @boolean1)--If there was an error then return right awayIF (@@ERROR <> 0)BEGINRETURNENDDELETE FROM TRANS_LOCATION WHERE TRANS_ID IN (SELECT TRANS_ID FROM TRANSWHERE SCHEDULED = 1 AND ALLOWED = 1 AND PRACTICE_MODE = @boolean1)--If there was an error then return right awayIF (@@ERROR <> 0)BEGINRETURNENDDELETE FROM TRANS_REBATE_XREF WHERE TRANS_ID IN (SELECT TRANS_ID FROM TRANSWHERE SCHEDULED = 1 AND ALLOWED = 1 AND PRACTICE_MODE = @boolean1)--If there was an error then return right awayIF (@@ERROR <> 0)BEGINRETURNENDDELETE FROM TRANS_REBATE WHERE TRANS_ID IN (SELECT TRANS_ID FROM TRANSWHERE SCHEDULED = 1 AND ALLOWED = 1 AND PRACTICE_MODE = @boolean1)--If there was an error then return right awayIF (@@ERROR <> 0)BEGINRETURNENDDELETE FROM TRANS_DISCOUNT_SPREAD WHERE TRANS_ID IN (SELECT TRANS_ID FROM TRANSWHERE SCHEDULED = 1 AND ALLOWED = 1 AND PRACTICE_MODE = @boolean1)--If there was an error then return right awayIF (@@ERROR <> 0)BEGINRETURNENDDELETE FROM TRANS_DISCOUNT WHERE TRANS_ID IN (SELECT TRANS_ID FROM TRANSWHERE SCHEDULED = 1 AND ALLOWED = 1 AND PRACTICE_MODE = @boolean1)--If there was an error then return right awayIF (@@ERROR <> 0)BEGINRETURNENDDELETE FROM TRANS_LINE_DISC WHERE TRANS_ID IN (SELECT TRANS_ID FROM TRANSWHERE SCHEDULED = 1 AND ALLOWED = 1 AND PRACTICE_MODE = @boolean1)--If there was an error then return right awayIF (@@ERROR <> 0)BEGINRETURNENDDELETE FROM TRANS_LINE_PRICE WHERE TRANS_ID IN (SELECT TRANS_ID FROM TRANSWHERE SCHEDULED = 1 AND ALLOWED = 1 AND PRACTICE_MODE = @boolean1)--If there was an error then return right awayIF (@@ERROR <> 0)BEGINRETURNENDDELETE FROM TRANS_LINE_TAX WHERE TRANS_ID IN (SELECT TRANS_ID FROM TRANSWHERE SCHEDULED = 1 AND ALLOWED = 1 AND PRACTICE_MODE = @boolean1)--If there was an error then return right awayIF (@@ERROR <> 0)BEGINRETURNENDDELETE FROM TRANS_LINE_ASSOCIATE WHERE TRANS_ID IN (SELECT TRANS_ID FROM TRANSWHERE SCHEDULED = 1 AND ALLOWED = 1 AND PRACTICE_MODE = @boolean1)--If there was an error then return right awayIF (@@ERROR <> 0)BEGINRETURNENDDELETE FROM TRANS_CUSTOMER WHERE TRANS_ID IN (SELECT TRANS_ID FROM TRANSWHERE SCHEDULED = 1 AND ALLOWED = 1 AND PRACTICE_MODE = @boolean1)--If there was an error then return right awayIF (@@ERROR <> 0)BEGINRETURNENDDELETE FROM TRANS WHERE SCHEDULED = 1 AND ALLOWED = 1 AND PRACTICE_MODE = @boolean1--If there was an error then return right awayIF (@@ERROR <> 0)BEGINRETURNENDSET @processed = @totalExpected - @notProcessedSELECT @processed AS PROCESSED, @totalExpected AS EXPECTED; |
|
jackv
Master Smack Fu Yak Hacker
2179 Posts |
|
|
|
|