我正在使用SQL Server 2008 R2。我正在从表中删除~5000条记录。当我使用相同的数据测试性能时,我发现删除需要1秒或31秒。
测试数据库是保密的,因此无法在此处共享。
我已经尝试将负载分开并且一次只删除1000条记录,但我仍然遇到偏差。
我该如何继续调查?可能是性能差异的原因是什么?
查询很简单,例如:delete from PART where INVOICE_ID = 64225
答案 0 :(得分:0)
DELETE子句使用大量的系统和事务日志资源,这就是为什么它需要花费很多时间。如果可能,请尝试TRUNCATE表。
答案 1 :(得分:0)
当您第一次运行DELETE时,可能数据不在缓冲池中,因此必须从存储中读取,第二次运行它将在存储中。其他因素包括检查点进程是否将已更改的页面运行到存储。发布您的查询计划 - >
set statistics xml on
select * from sys.objects
set statistics xml off
答案 2 :(得分:0)
哎呀!仔细看看执行计划后,我注意到一个索引丢失了。添加索引后,所有执行都快速运行。请注意,在此之后我删除了索引以测试问题是否回来。性能偏差再次出现。