当前位置: 首页 > 面试题库 >

SQL DELETE-最大行数

陈实
2023-03-14
问题内容

对SQL语句中要删除的行数应设置什么限制?

我们需要从1删除到几十万行,并且需要应用某种最佳实践限制,以便在每次清空废纸bas时不会绝对终止SQL Server或填充日志。

此问题并非特定于任何类型的数据库。


问题答案:

这是一个非常广泛的问题,基本上可以归结为“取决于”。影响它的因素包括:

  • 您的并发级别是多少?delete语句在受影响的行上设置排他锁。根据数据库引擎,删除的数据分布等,这些信息可能会升级到页面或整个表。可以在删除期间阻止您的数据读取器吗?

  • delete语句有多复杂?您要加入多少个其他表,或者有复杂的WHERE子句?有时,要删除的行的标识可能比删除本身更“昂贵”,因此,一个大的删除可能是“便宜”。

  • 您担心僵局吗?随着删除大小的减少,死锁“占用空间”也减小了。理想情况下,单行删除将始终成功。

  • 您是否关心吞吐量性能?与任何SQL语句一样,通常开销是恒定的(连接内容,查询解析,返回结果等)。从单连接的角度来看,删除1000行比删除1000 x 1行要快。

  • 不要忘记索引维护开销,碎片清理或任何触发器。它们也会影响您的系统。

不过,总的来说,我以每条语句1000行作为基准。我使用过的大多数系统(“企业”)最终每次删除都会有500到5000条记录。我喜欢做这样的事情:

set rowcount 500

select 1    -- Just to force @@rowcount > 0
while @@ROWCOUNT > 0
delete from [table]
     [where ...]


 类似资料:
  • 我有两个矩阵,如下所示: 我想找到一个向量,它是一个矩阵1*3,它的每一个元素都是M的每一行的最小元素乘以N的对应行的最大元素(例如,向量的第一个元素是矩阵M的第一行的最小元素,即1,乘以矩阵N的第一行的最大元素,即4,因此向量的第一个元素是1*4,即4)。最后的答案是:(1*4,1*3,1*4)=(4,3,4) 为了找到这个向量(或矩阵),我写了下面的代码: 但它太长了。有人能写一个更短(或更简

  • 我想知道什么是最大的行数,你可以创建与apache poi 3.8和什么是最大的行数,你可以创建与apache poi 3.0生成excel文件。

  • 问题内容: 我可以无痛地使用多少个goroutine?例如,维基百科说,在Erlang中,可以创建2000万个进程,而不会降低性能。 更新: 我刚刚对goroutine的性能进行了一些调查,并得到了这样的结果: 看起来goroutine的寿命要比计算sqrt()的时间还要长1000倍(对我而言约为45µs),唯一的限制是内存 Goroutine成本4 — 4.5 KB 问题答案: 如果gorout

  • 问题内容: 我正在处理一个大型文本文件(500k行),其格式如下: 我正在使用下面的代码返回每个系列的相关系数,例如S!_A16: 但是,在一些大文件上,这将返回错误: 我了解这与该声明有关,但是如何解决? 编辑 :这与最大行数有关。有谁知道如何容纳更多的行? 问题答案: 错误信息: 说负一个是TypeError。如果查看回溯中的倒数第二行,您会发现唯一的减法是 所以一定是。如果您进入857号线附

  • 查看以下: 问题是它不会在ipython笔记本中按默认值打印所有行,但我必须切片才能查看结果行。即使以下选项也不会更改输出: 有人知道如何显示整个阵列吗?

  • 问题内容: 我有一张价格变动表,我需要获取初始价格和最新价格。换句话说,我想在每种产品的一行中显示min(StartDate)和max(StartDate)的价格值。 表的结构很简单: 所需的结果是 问题答案: SQLFiddle演示