Plateforme Level Extreme
Abonnement
Profil corporatif
Produits & Services
Support
Légal
English
Optimizing a Stored Procedure
Message
De
07/03/2014 15:14:17
 
 
Information générale
Forum:
Microsoft SQL Server
Catégorie:
Stored procedures, Triggers, UDFs
Versions des environnements
SQL Server:
SQL Server 2012
Application:
Desktop
Divers
Thread ID:
01595936
Message ID:
01595946
Vues:
30
>>Hi,
>>
>>I have the following SP which is running very slowly:
>>
>>
CREATE PROCEDURE [dbo].[ManifestHeaderDelete]
>>(
>>	@man_number int
>>)
>>AS
>>	SET NOCOUNT OFF;
>>
>>	delete [dbo].invoicedetails
>>	from [dbo].invoicedetails
>>	inner join invoices on ivd_invfk = inv_pk
>>	inner join AirWayBills on inv_awbfk = awb_pk
>>		  WHERE awb_manifestnumber = @man_number
>>
>>	delete [dbo].invoices
>>	from [dbo].invoices
>>	inner join AirWayBills on inv_awbfk = awb_pk
>>		  WHERE awb_manifestnumber = @man_number
>>
>>	DELETE [dbo].[AirWayBillDetails]
>>	 FROM [dbo].[AirWayBillDetails]
>>	 inner join [dbo].[AirWayBills] on awd_awbfk = awb_pk
>>		  WHERE awb_manifestnumber = @man_number
>>
>>
>>	DELETE [dbo].[AirWayBills]
>>	 FROM [dbo].[AirWayBills]
>>		  WHERE awb_manifestnumber = @man_number
>>
>>
>>	DELETE FROM [dbo].[ManifestHeader]
>>	WHERE 
>>		([man_number] = @man_number)
>>
>>Any advice on optimising this or should I use Cascading deletes based on referential integrity?
>
>CASCADE DELETE sounds like the simplest solution for your case.
>
>Otherwise I would select InvoiceId and InvoiceDetailsID into a temp table and then use it for other delete statements (which need to be in transaction, BTW).

thanks, good point about the transaction.
Frank.

Frank Cazabon
Samaan Systems Ltd.
www.samaansystems.com
Précédent
Répondre
Fil
Voir

Click here to load this message in the networking platform