我在类似主题上看到的大多数问题都涉及如何加速插入表格。
我想知道如何加快删除速度?
我不能截断或删除表格,我必须做类似于
的操作DELETE FROM table WHERE id IN (SELECT id FROM other_table)
答案 0 :(得分:1)
您的案例没有特别的帮助,因为它取决于。
一般规则(如适用):
答案 1 :(得分:1)
要遵循的一些一般性想法。
除此之外,它只是一个主观猜测,是什么导致你的减速。最好的办法是尝试一些事情,看看有什么帮助,什么使它变慢,了解如何在调用删除时找到行中的项目,并查看最长的内容。
答案 2 :(得分:1)
示例:
SELECT 'Starting'
WHILE ROWCOUNT <> 0
DELETE TOP (1000000) T
FROM table T
WHERE EXISTS (
SELECT * from otherTable OT WHERE T.id = OT.id
)
答案 3 :(得分:0)
“table”是否在“id”列上有索引?
如果没有,SQL Server可能会进行表扫描以查找要删除的记录。您可以通过在“id”列上创建索引来加快速度。
与“other_table”相同 - 如果该表上的选择也有WHERE子句,请检查其中使用的列是否已编入索引。
答案 4 :(得分:0)
以较小的批次删除,例如一次删除1000条记录。实际的删除需要更长的时间(确保有所需的索引),但在长时间运行的删除运行时,用户不会被锁定在表外。