gpt4 book ai didi

sql - 优化表中5000万条记录的删除操作

转载 作者:行者123 更新时间:2023-12-05 08:21:09 25 4
gpt4 key购买 nike

我需要删除大约 5000 万条记录(而不是整个表)我搜索并找到了一些方法来做到这一点

这个查询做了我想要的,我可以通过将子查询的结果存储在 #TempTable 中来稍微优化它

我还能做什么?

迄今为止最快的查询:

CREATE TABLE #UserIDs ( UserId UNIQUEIDENTIFIER  NOT NULL  );
CREATE CLUSTERED INDEX myIndex ON #UserIDs (UserId)

INSERT INTO #UserIDs
SELECT UserId FROM TableX WHERE UserID IS NOT NULL;

INSERT INTO #UserIDs
SELECT UserID FROM TableY WHERE CreatorID IS NOT NULL;

DELETE TOP (10000)
FROM Users
WHERE
Email IS NULL
AND
(
(NOT EXISTS ( SELECT 1 FROM #UserIDs WHERE #UserIDs.UserId = Users.UserId ) )
)

DROP TABLE #UserIDs

Execution Plan

最佳答案

如果要保留的记录数与需要删除的记录数相比较小,我会将它们复制到临时表,然后截断原始表并从临时表中插入保留的记录。表截断工作非常快,因此您可以节省很多时间。然而,TRUNCATE TABLE 并不总是有效,但它可以成为您的解决方案。

关于sql - 优化表中5000万条记录的删除操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20362663/

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