许多删除的 SQL 性能



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

我想删除客户表的几个相关表。大约 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# 代码等运行它。

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