从SQL Server数据库中删除相同数量的记录需要0.2秒或30秒

时间:2015-11-30 12:56:56

标签: sql-server

我正在使用SQL Server 2008 R2。我正在从表中删除~5000条记录。当我使用相同的数据测试性能时,我发现删除需要1秒或31秒。

测试数据库是保密的,因此无法在此处共享。

我已经尝试将负载分开并且一次只删除1000条记录,但我仍然遇到偏差。

我该如何继续调查?可能是性能差异的原因是什么?

查询很简单,例如:delete from PART where INVOICE_ID = 64225

3 个答案:

答案 0 :(得分:0)

DELETE子句使用大量的系统和事务日志资源,这就是为什么它需要花费很多时间。如果可能,请尝试TRUNCATE表。

答案 1 :(得分:0)

当您第一次运行DELETE时,可能数据不在缓冲池中,因此必须从存储中读取,第二次运行它将在存储中。其他因素包括检查点进程是否将已更改的页面运行到存储。发布您的查询计划 - >

set statistics xml on

select * from sys.objects

set statistics xml off

答案 2 :(得分:0)

哎呀!仔细看看执行计划后,我注意到一个索引丢失了。添加索引后,所有执行都快速运行。请注意,在此之后我删除了索引以测试问题是否回来。性能偏差再次出现。