zoukankan      html  css  js  c++  java
  • 在Sql server 中删除大数据量表时的方法

    在删除一个拥有将近2000万条记录的表时,用简单的delete操作,发现即使只是删除几万条数据都要很长的运行时间,可能的原因我猜想大概有:(1)每一条记录的delete操作都会在数据库日志中加以记录;(2)表上的索引重建也导致比较耗时的操作。

    在参考网上的一些建议之后,并根据实际情况:(1)确定要删除的数据并不打算做日志回滚;(2)通过减少数据量后重建索引或许速度并不见得慢多少。因此决定采用truncate table来操作。

    (1)复制出需要保留的数据:

    select * into table2 from table1 where id>100000;

    (2)用truncate table删除原表中的数据,使用truncate table时,将删除表中的所有行,而不记录单个行删除操作。TRUNCATE TABLE 通过释放用于存储表数据的数据页来删除数据,并且在事务日志中只记录页释放。因而效率很高。

    truncate table table1;

    (3)回写保留下来的数据

    insert into table1 select * from table2

    (4)删除临时数据表

    drop table table2

    ------------------------------------------------------------------------------------------

    有关truncate table的一些描述在sql server的帮助文档中有详细描述,这里抄录如下:

    Code
  • 相关阅读:
    【案例】图片上传
    BOM相关知识点
    【案例】图片无缝轮播效果
    DOM相关知识点
    【案例】雪花飘落效果
    DOM节点克隆
    DOM节点的创建、插入、删除
    【案例】列表全选、全不选、反选
    AJAX相关概念及应用
    解决跨域问题
  • 原文地址:https://www.cnblogs.com/mincyw/p/1299748.html
Copyright © 2011-2022 走看看