删除sql server中的大量数据

2024-05-03

假设我有一个有 10000000 条记录的表。这两种解决方案有什么区别?

  1. 删除数据,例如:

    DELETE FROM MyTable
    
  2. 使用应用程序逐行删除所有数据:

    DELETE FROM MyTable WHERE ID = @SelectedID
    

第一个解决方案是否具有最佳性能? 对日志和性能有什么影响?


如果您需要限制需要删除的行而不执行完全删除,或者您不能使用 TRUNCATE TABLE (例如,该表由 FK 约束引用,或包含在索引视图中),那么您可以这样做分块删除:

DECLARE @RowsDeleted INTEGER
SET @RowsDeleted = 1

WHILE (@RowsDeleted > 0)
    BEGIN
        -- delete 10,000 rows a time
        DELETE TOP (10000) FROM MyTable [WHERE .....] -- WHERE is optional
        SET @RowsDeleted = @@ROWCOUNT
    END

一般来说,TRUNCATE 是最好的方法,如果可能的话我会使用它。但它并不能适用于所有场景。另请注意,如果有表,TRUNCATE 将重置该表的 IDENTITY 值。

如果您使用的是 SQL 2000 或更早版本,则 TOP 条件不可用,因此您可以使用 SET ROWCOUNT 代替。

DECLARE @RowsDeleted INTEGER
SET @RowsDeleted = 1
SET ROWCOUNT 10000 -- delete 10,000 rows a time

WHILE (@RowsDeleted > 0)
    BEGIN
        DELETE FROM MyTable [WHERE .....] -- WHERE is optional
        SET @RowsDeleted = @@ROWCOUNT
    END
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

删除sql server中的大量数据 的相关文章

  • SQL Server 标识列值从 0 而不是 1 开始

    我遇到了一个奇怪的情况 数据库中的某些表的 ID 从 0 开始 即使 TABLE CREATE 的 IDENTITY 1 1 也是如此 对于某些表来说是这样 但对于其他表则不然 它一直有效到今天 我尝试过重置身份列 DBCC CHECKID
  • 将子查询的结果插入表中并带有常量

    相关表格的概要如下 我有一个表 我们称之为联接 它有两列 都是其他表的外键 我们将这两列称为 userid 和buildingid 因此 join 看起来像 join userid buildingid 我基本上需要在这个表中插入一堆行 通
  • CSS3 - 性能最佳实践是什么? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 如何针对 IE 进行优化?

    我有一个 JS 密集型应用程序 它在 IE 中运行缓慢 我将花费大约一周的时间来优化 IE 并且我想要一些关于尝试的方向 我发现这个线程引用Drip https ieleak svn sourceforge net svnroot iele
  • Getter 和 Setter。有性能开销吗?

    我的 C 项目中有一个粒子系统引擎 粒子本身只是没有函数的变量结构 目前 每个粒子 Particle 都是通过直接访问其变量来从其父类 ParticleSystem 进行更新 例如 particle x particle vx 然而 我正在
  • 数据结构的优化存储以实现快速查找和持久化

    Scenario 我有以下方法 public void AddItemSecurity int itemId int userIds public int GetValidItemIds int userId 最初我正在考虑表单上的存储 i
  • 删除原始数据中部分重复的记录

    我需要删除表中时间间隔为 1 或 2 分钟或相同且必须相同的所有记录ID但保留第一个记录 ID Time SN SD WE FW 10 2014 06 30 19 17 37 000 I 0 100 0 10 2014 06 30 19 1
  • 频繁插入已排序的集合

    我已经对集合 列表 进行了排序 并且我需要始终保持其排序 我目前在我的集合上使用 List BinarySearch 然后在正确的位置插入元素 我也尝试过在每次插入后对列表进行排序 但性能不可接受 有没有一种解决方案可以提供更好的性能 也许
  • 在SQL Server中仅获取浮点数的小数部分[关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 我在 SQL Server 2008
  • 由于内容不可压缩,谷歌浏览器中出现了新的复合层

    当 chrome profiler 说 图层是单独合成的 因为它无法被挤压 时 它到底意味着什么 我正在对我的 html 进行更改 并在相对 div 内引入了一个固定位置 div 并给出了will change transform在上面 完
  • 在单个更新语句上使用事务

    我在工作中为一些 SP 配音 我发现编写代码的人在单个更新语句上使用了事务 如下所示 begin transaction single update statment update table whatever with whatever
  • 从数据库配置中的连接字符串中删除 SSIS 密码

    我有一个 SSIS 包 它使用 SQL 服务器中的 SSIS 配置表来检索 OLE DB 连接管理器的连接字符串属性 问题是我还需要相同的连接字符串来调用使用实体框架的程序集 我尝试访问连接管理器连接字符串属性 但 SSIS 总是删除密码
  • SQL Server 查询结果集的大小

    SQL Server 中是否有确定结果集中 Mgmt Studio 查询中返回的数据大小 以 MEGS 为单位 您可以打开客户端统计信息 查询菜单 包括客户端统计信息 它给出执行查询时从服务器返回的字节数
  • SQL Server 中的动态透视多列

    我有一张这样的桌子 Id Name FromAddress ToAddress 1 Joey ABC JKL 2 Joey DEF MNP 3 Joey GHI OQR 我正在 SQL Server 中寻找带有动态数据透视表的以下输出 Na
  • SQL Server 使用通配符加入并在第一个匹配处停止

    IF OBJECT ID tempdb TABLE1 IS NOT NULL DROP TABLE TABLE1 IF OBJECT ID tempdb TABLE2 IS NOT NULL DROP TABLE TABLE2 CREATE
  • 如何清除chrome性能条目或绕过其数量限制?

    我使用 Google Chrome 来分析一些使用 Javascript 动态加载脚本和其他资源的网页的性能 我用performance getEntries 方法 但我注意到 Chrome 只记录前 150 个资源 我找不到任何方法来获取
  • 为什么我的代码在编译用于分析 (-pg) 时在多线程下运行比在单线程下运行慢?

    我正在写一个光线追踪器 最近 我在程序中添加了线程 以利用 i5 四核上的附加内核 奇怪的是 应用程序的调试版本现在运行速度变慢 但优化后的构建运行速度比添加线程之前更快 我将 g pg 标志传递给 gcc 以进行调试构建 并将 O3 标志
  • 如何找出我的 MS SQL Server 排序规则是什么?

    是否有我可以执行的 SQL 来找出答案 服务器默认排序规则 select serverproperty collation 哪个是相同的 select databasepropertyex master collation Check 服务
  • 我必须做什么才能使通过 HTTPS 提供的图像等内容缓存在客户端?

    我使用 Tomcat 作为服务器 使用 Internet Explorer 6 作为浏览器 我们应用程序中的网页大约有 75 张图像 我们正在使用 SSL 加载所有内容似乎非常慢 如何配置 Tomcat 以便 IE 缓存图像 如果您通过 h
  • 将多行合并为一行并根据行数附加列

    我正在尝试将同一个表的多行合并为一个 我有一个像这样的示例表 Col1 Col2 Col3 Col4 Col5 Col6 1 BH1 CB 12 CC CC Conveyor Mal 1 BH1 CB 104 ZC ZC Full Emp

随机推荐

  • 如何在屏幕的某些位置对齐视图,并在多种屏幕分辨率下保持一致?

    我在调整按钮时遇到了一些问题 我想把它们放在屏幕的 大约 1 3 和 2 3 处 我在下面提供了一个屏幕截图 以使事情更加清晰 我的代码如下
  • NumPy 数组不可 JSON 序列化

    创建 NumPy 数组并将其保存为 Django 上下文变量后 加载网页时收到以下错误 array 0 239 479 717 952 1192 1432 1667 dtype int64 is not JSON serializable
  • ASP.NET MVC - 路由 - 具有文件扩展名的操作

    有没有办法实现调用URLhttp mywebsite myarea mycontroller myaction xml这基本上是 假 请求文件 但结果将是一个为动态创建的文件提供服务的操作操作 我试过这个 context MapRoute
  • 如何使用 GCC 在 C 上编译库?

    我用这些文件创建了一个库pila h and pila c 我编译文件pila c with gcc pila c c这个库运行良好 我已经测试过了 然后我又做了一个图书馆 这个库有文件pila funciones extra h and
  • 我应该设计一个 SQL Server 数据库来依赖 UNION 还是避免它?

    执行以下 SQL 查询 SELECT Account Amount AS Deposit 0 00 AS Withdrawal Date FROM Deposits WHERE Account Account UNION SELECT Ac
  • LINQ 中的左外连接

    下面的代码不断给我一个错误消息 你调用的对象是空的 var partsWithDefaults from partsList1 in p join partsList2 in d on new PartNo partsList1 PartN
  • 向页面添加多个相同类型的用户控件

    已经有人问过与此类似的问题 但似乎没有一个问题能解决我的具体情况 这就是我正在尝试做的事情 我有一个管理学生信息的用户控件 即名字 姓氏 地址等 我有一个网页 表单 上面有一个按钮 添加学生 我想要完成的是每次单击后将新的 StudentI
  • php中有指针吗?

    这段代码是什么意思 这就是你在 php 中声明指针的方式吗 this gt entryId entryId PHP 中的变量名称以 开头 因此 entryId 是变量的名称 this是PHP面向对象编程中的一个特殊变量 它是对当前对象的引用
  • 宏中 do { } while(0) 与 ({ }) 的优点?

    Stack Overflow 上有很多关于使用的问题do while 0 在宏中 但这有点不同 我明白为什么do while 0 用于将多行代码包装在宏扩展中 但我经常看到另一种形式 The form 的优点是它是一个表达式并且可以有 返回
  • JJWT依赖混乱

    我继承了一个java项目 在POM xml中有这个
  • 如何更新 Google 表格插件

    我已对我的 已发布的 Google Sheets 插件 在脚本编辑器中 进行了更改 我创建了一个新版本并按 发布 gt 部署为附加组件 上面写着 You must configure the G Suite Marketplace SDK
  • 无法在 Google Colab 中打开从 GitHub 克隆的存储库

    我想克隆 GitHub 存储库 体验 keras yolo2 https github com experiencor keras yolo2 我按照以下命令操作 git clone https github com experiencor
  • 线性回归并将结果存储在数据框中[重复]

    这个问题在这里已经有答案了 我正在对数据框中的某些变量进行线性回归 我希望能够通过分类变量对线性回归进行子集化 对每个分类变量运行线性回归 然后将 t 统计数据存储在数据框中 如果可能的话 我想在没有循环的情况下执行此操作 这是我正在尝试做
  • 适用于 VPN 的 iOS 专用 API

    我正在寻找一些私有 API 来启动在 设置 应用程序中配置的 VPN 连接 有人有什么建议我可以在哪里找到它们吗 我唯一发现的是 ManagedConfiguration framework 这是正确的起点吗 没有任何文档 这有点困难 附
  • 脚本和链接标签的简写 http:// 为 // ?有人以前看过/用过这个吗?

    问题如下 如果您使用 addthis 共享按钮 查看任何网站 一旦您浮动在 addthis 按钮上 并且加载了所有必需的资源 请使用 firebug 或 chrome 检查器查看文档的正文 不是源代码 而是屏幕上的实际文档 对象检查器 你会
  • 监听鼠标事件……除了 div 的溢出:滚动滚动条?

    关于如何监听 mousedown 的任何建议 document exceptdiv 的溢出 滚动滚动条 我不确定滚动条是什么元素is为了参考它 您可以使用以下命令自行检查目标 document on mousedown function e
  • 使用 Asp.net 中的路由在 URL 中添加语言名称

    如何使用路由在 URL 中添加语言名称 我的网站运行于http localhost 41213 default aspxURL 成功 但该网站是多语言的 我的客户希望根据他想要的语言运行该网站http localhost 41213 en
  • 使用本地系统帐户运行时,GetAccessControl 方法失败,出现意外错误代码 3

    我已经创建了 Windows 服务并使用本地系统帐户运行它 该服务正在读取用户文件并查找其所有者 在获取文件的访问权限以查找所有者时 它抛出以下异常 方法失败 出现意外错误代码 3 StackTrace 在 System Security
  • 使用 Maven 仅下载 JAR

    我想让 Maven 下载 pom xml 文件中列出的 JAR 我怎么做 目前 Maven 想要编译该项目 但失败了 我不关心编译它 因为我是手动编译的 我只想要罐子 帮助 Albert ps 背景 我手动编译它是因为我可以轻松地在Ecli
  • 删除sql server中的大量数据

    假设我有一个有 10000000 条记录的表 这两种解决方案有什么区别 删除数据 例如 DELETE FROM MyTable 使用应用程序逐行删除所有数据 DELETE FROM MyTable WHERE ID SelectedID 第