【问题标题】:Deleting data in a sql server table takes much time删除 sql server 表中的数据需要很长时间
【发布时间】:2015-07-06 21:49:10
【问题描述】:

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

  1. 删除一些记录。
  2. 插入一些东西。

执行整个过程大约需要 30 分钟。这DELETE 需要 28 分钟。

Delete 是一个简单的语句,大致如下:

Delete a where condition_1 AND condition_2 AND condition_3

谁能帮帮我?

【问题讨论】:

  • 表上有删除触发器吗?

标签: sql-server performance


【解决方案1】:

您的餐桌是如何组织的?你有什么聚集索引,你有什么非聚集索引?这三个条件到底是什么?

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

【讨论】:

    【解决方案2】:

    首先看看你的indexing 和查询..它真的应该首先不接受28 mins 吗?

    也许值得看看database tuningquery optimization...也许您也可以尝试逐步删除记录...建议here..

    【讨论】:

    【解决方案3】:

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

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

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

    选项ASC/DESC可以定义一个订单

    【讨论】:

    • 条件不大...只是比较 EX: c_number = '01102'。我不能截断......因为我没有删除这个表中的整个数据。
    【解决方案4】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-01-03
      • 1970-01-01
      • 1970-01-01
      • 2015-03-31
      • 2011-02-07
      • 2021-10-31
      相关资源
      最近更新 更多