gpt4 book ai didi

sql - 使用计数优化 DELETE 语句

转载 作者:行者123 更新时间:2023-12-02 15:05:59 26 4
gpt4 key购买 nike

您认为以下两条语句中哪一条对于删除大量行最有效?

声明#1:

DELETE TOP (@count) FROM ProductInfo WHERE productId = @productid

语句#2:派生表

DELETE t1 FROM (SELECT TOP (@count) * from ProductInfo 
WHERE productId = @productId v) t1

最佳答案

两者兼而有之。当处理数量较多时,由于单个事务日志增长的问题,需要批量删除。假设您要删除给定 @productId 的所有记录:

declare @batchSize int = 10000;
do while(1=1)
begin
delete top(@batchSize) from ProductInfo where productId = @productId;
if (0 = @@rowcount)
break;
end

您发布的两种形式的 DELETE 基本相同,重要的是表是由基于 productId 键的聚集键组织的。如果情况并非如此,并且您在 productId 上有 NC 索引,则必须校准 @batchSize 以避免 index tipping point

关于sql - 使用计数优化 DELETE 语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3815159/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com