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