代码之家  ›  专栏  ›  技术社区  ›  Random Developer

SQL Server 2005高效删除

  •  0
  • Random Developer  · 技术社区  · 16 年前

    问题1:在MS SQL Server 2005中,从表中删除大量数据、使表保持在线并将对需要使用此表的其他资源的影响降至最低的最佳方法是什么?

    A2:正如@Remus Rusanu告诉我的,有一种方法可以做到 row level locking

    3 回复  |  直到 11 年前
        1
  •  2
  •   Ta01    16 年前
        2
  •  1
  •   no_one    16 年前

    我最近刚做了类似的事情。我只是创建了一个SQL Server作业,每10分钟运行一次,删除一百万行。代码如下

    SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED;
    DELETE TOP 1000000 FROM BIG_TABLE WHERE CreatedDate <= '20080630'
    

    所说的表有大约9亿行要开始。没有注意到任何重大性能问题。

        3
  •  1
  •   Remus Rusanu    16 年前

    最有效的方法是使用分区切换,请参阅 Transferring Data Efficiently by Using Partition Switching . 缺点是它需要提前规划分区的部署方式。

    如果分区切换不可用,那么答案取决于实际的表模式。您最好发布实际的模式(包括所有索引,最重要的是集群键定义)和限定删除候选项的条件。