删除sql server表中的数据需要很长时间

时间:2010-10-07 15:48:15

标签: sql-server performance

我有一张表有超过3.8亿条记录。我有一个存储过程:

  1. 删除部分记录。
  2. 插入内容。
  3. 总程序大约需要30分钟才能执行。超出此DELETE需要28分钟。

    删除是一个简单的陈述,有以下几点:

    Delete a where condition_1 AND condition_2 AND condition_3
    

    有人能帮助我吗?

4 个答案:

答案 0 :(得分:8)

你的桌子是如何组织的?您拥有什么聚集索引以及您拥有哪些非聚集索引?那三个条件究竟是什么?

DELETE的行为与SELECT非常相似,因为它需要查找符合删除条件的行。为此,它将使用与SELECT相同的技术,如果您的condition_1,condition_2和condition_3没有覆盖索引,它们将触发一个表扫描,该扫描将按数据大小计时(380M)

答案 1 :(得分:2)

条件太大了吗? 也许使用索引可以帮助更快地删除。

或者,您可以使用truncate而不是delete。

CREATE [UNIQUE] INDEX indexName
ON table
(fieldName [ASC/DESC], ...)

选项ASC / DESC可以定义订单

答案 2 :(得分:2)

首先看一下你的indexing和查询..首先应该不考虑28 mins吗?

可能值得一看database tuningquery optimization ...也许你也可以尝试逐步删除记录......有些建议here ..

答案 3 :(得分:0)

索引条件中的字段可能会有所帮助。如果您创建要删除的行的视图,需要多长时间?如果您可以加快视图速度,则可以加快删除速度。