许多删除的SQL性能

时间:2018-04-12 11:59:06

标签: sql sql-server performance

我有一个充满GUID的临时表## TempCleanseTheseCustomers。

我想删除几个与customer表相关的表。大约30个相关表格。以下是一些例子:

Delete from AddressHistory
Where CustomerId in (select CustomerId From ##TempCleanseTheseCustomers)

Delete from Address
Where CustomerId in (select CustomerId From ##TempCleanseTheseCustomers)


DECLARE @MessageMessageId uniqueidentifier
set @MessageMessageId = 
(
SELECT        TOP (1)  Message.MessageId
FROM            Customer INNER JOIN
                     CustomerMessage ON Customer.CustomerId = 
CustomerMessage.CustomerId INNER JOIN
                     Message ON CustomerMessage.MessageId = 
Message.MessageId
Where Customer.CustomerId in (select CustomerId From 
##TempCleanseTheseCustomers)
)


Delete from MessageAttachment
Where MessageId = @MessageMessageId

Delete from Message
Where MessageId = @MessageMessageId

如何尽可能快地运行? (## TempCleanseTheseCustomers包含超过200万行)

我尝试将表格移动到内存中。通过C#代码等运行它。

1 个答案:

答案 0 :(得分:0)

可能您可以检查## TempCleanseTheseCustomers上没有重复记录,并检查其他几个表上是否存在索引和键