我应该在删除数据之前禁用聚集索引吗?

2024-06-26

我知道这已经像任何事情一样被讨论过,但找不到我可以接受的可靠答案。

假设我有一个有100亿条记录的表,需要删除where子句中带有标识列的记录。我应该选择哪个选项?

选项1:禁用索引,这将节省删除后重新排列索引的开销,但会花费更长的时间来搜索需要删除的行。

选项 2:不对索引执行任何操作,这将非常快速地定位行,但重新排列索引可能需要一些时间。

我更倾向于第二种选择,但想看看专家会怎么说? :)


假设我有一个有100亿条记录的表,需要删除where子句中带有标识列的记录。我应该选择哪个选项?

如果要删除(或插入)表的 10% 以上(10 亿条记录),则应删除所有非聚类索引,删除记录,然后重建非聚类索引。

如果要删除的表少于 10%,请将索引保留在原处。

您可以自由地进行性能测试,看看 10% 规则是否适用于您的 SQL Server 数据库引擎。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

我应该在删除数据之前禁用聚集索引吗? 的相关文章

  • 仅当列不为 NULL 时才连接列

    我有一个像这样的 SQL Server 表 PERSON NAME PHONE PHONE1 PHONE2 PHONE CONCAT Name1 12345 Null Null Null
  • GRANT EXECUTE 所需的权限

    我正在为需要能够创建和删除过程但也向其他用户授予执行权限的用户创建一个组 GRANT CREATE PROCEDURE TO xxx xxx GRANT ALTER ON SCHEMA dbo TO xxx xxx 但是 我需要向组授予什么
  • SSDT 单元测试:从配置文件读取 SQL Server 单元测试设置时发生错误

    我在 Visual Studio 2013 professional 中创建了一个数据库项目 然后通过右键单击存储过程之一并选择来添加单元测试创建单元测试 选择创建一个新的VB测试项目 然后右键单击新创建的测试项目并选择SQL Server
  • 将记录与另一个表上的最新记录连接

    我正在尝试创建一个 SQL 视图 我如何从一个表中选择最新的记录 而其他记录保持原样 我需要从所有表中选择所有记录 这工作正常 但我需要仅按日期选择最新的提案 这是我遇到的问题 这是我到目前为止所拥有的 SELECT TOP 100 PER
  • 更改 SQL Server 中所有表的所有列的排序规则

    我导入了一个包含一些数据的数据库 以便与另一个数据库进行比较 目标数据库有排序规则Latin1 General CI AS并且源数据库有SQL Latin1 General CP1 CI AS 我确实将源数据库的排序规则更改为Latin1
  • 查看tomcat服务器的连接数

    我在 Tomcat Server 5 5 17 上部署了一个 Java Java EE Web 应用程序 我想知道连接到服务器的客户端数量 我们怎样才能找到它呢 最可靠的方法是搜索ip addr of srv port in netstat
  • ROUTINE_NAME 和 SPECIFIC_NAME 之间有什么区别?

    在 INFORMATION SCHEMA ROUTINES 视图中 存在 ROUTINE NAME 和 SPECIFIC NAME 按照MSDN http msdn microsoft com en us library ms188757
  • 从 Visual Studio 调试 SQL Server 2005 中的存储过程?

    我在这里和其他地方看到很多令人沮丧的问题 但没有明确的答案 我试图让存储过程进行调试 但没有成功 客户端 VS2005或VS2008 两者都不起作用 当我从存储过程上下文菜单中选择 步入存储过程 时 我在调试窗口中看到 已被用户取消 这就是
  • 删除 SQL Server 上的所有扩展属性

    如何以可编写脚本的方式删除 SQL Server 上的所有扩展属性 如果您想要一个能够一次性删除所有扩展属性的脚本 请使用 Jamie Thomson 创建的脚本 该脚本将为所有扩展属性生成删除 您可以从这里下载article http s
  • SQL Server:比较两个表中的列

    我最近完成了从某些应用程序的旧版本到当前版本的迁移 在迁移数据库时遇到了一些问题 我需要一个可以帮助我比较两个表中的列的查询 我的意思不是行中的数据 我需要比较列本身来弄清楚我错过了表结构的哪些变化 看一下红门 SQL 比较 http ww
  • 在 T-SQL 中获取 2 位数年份

    我需要获取当前的两位数年份并加一 所以我当前要查找的数字应该是 11 怎么样 你可以做 YEAR GETDATE 100 1 See GETDATE http msdn microsoft com en us library ms18838
  • 有没有办法使用 SqlBulkCopy 而不将数据转换为 DataTable?

    有没有办法使用 SqlBulkCopy 而不将数据转换为 DataTable 我在 RAM 中有一个对象列表 List 我真的不想使用更多内存来创建数据表 是否可以在列表上实现 IDataReader Thanks 我当然想象你可以 Bul
  • 合并和替换函数

    我试图用 替换查询中的所有空值 因为我们的接口不接受 NULL 作为条目 我遇到了一段代码 其中我使用 REPLACE 函数删除 SSN 中的 DASHES 我如何告诉系统为 SSN 列中的 NULL 值提供 并且仍然对非空条目 SSN 执
  • 加载SSIS包时出错

    我正在尝试在 SQL Server 2008R2 上执行 SSIS 包 该脚本检索远程服务器上的数据并将其复制到本地数据库 该作业每小时安排一次 SQL 代理使用代理向远程计算机验证自身身份 身份验证似乎没问题 但在加载 SSIS 包期间出
  • End using 是否关闭打开的 SQL 连接

    如果我将 SQLConnection 包装在 using 中 我应该关闭它还是最终 using 处理它 using cn as new system data sqlclient sqlconnection cn open do a bun
  • 测试 ODBC 连接的有效方法

    我们的产品是一个 TCP 监听事务处理器 传入连接被分配一个线程来处理连接和一个数据库连接来使用 我们维护一个数据库连接池 而不是为每个传入的客户端连接建立新的数据库连接的昂贵方法 数据库连接池相当可配置 最小 最大大小 增长率等 一些细节
  • sp_MSforeachtable 在每个表上执行过程

    我想打印一些动态查询来对数据库中的所有表执行过程 这是我到目前为止所写的 EXEC SP MSFOREACHTABLE IF EXISTS SELECT FROM INFORMATION SCHEMA COLUMNS WHERE COLUM
  • T-SQL 中的异步存储过程调用

    如何从另一个存储过程对存储过程进行异步调用 假设我有两个存储过程 SP1 和 SP2 这是一个长时间运行的存储过程 需要很长时间执行 并且不返回任何结果 存储过程SP1定义如下 CREATE PROCEDURE SP1 AS BEGIN c
  • 如何在SQL Server数据库的所有表的所有列中搜索特定字符串?

    我们想要在拥有大约 120 个表的所有数据库中搜索一个字符串 即 Hello World 我们考虑过像 mysql dump 一样进行转储 但它以奇怪的 bak 格式出现 应在每个表的每一列中进行搜索 任何类型的脚本都可以做到这一点 或者这
  • PowerShell:带有 Get-Credential 的 invoke-sqlcmd 不起作用

    我从未见过如此简单的脚本会如此失败 SQLServer localhost cred Get Credential invoke sqlcmd ServerInstance SQLServer Credential cred Query s

随机推荐

  • 创建具有子级别的类属性

    我一直在读这个topic https excelmacromastery com vba class modules A Quick Guide to the VBA Class Module关于如何使用类模块 我的目标是提高代码性能和可读
  • Pyspark 应用程序仅部分利用 dataproc 集群资源

    我的 pyspark 应用程序在 106 36 MB 数据集 817 270 条记录 上运行 UDF 使用常规 python lambda 函数大约需要 100 小时 我创建了一个 Google Dataproc 集群 其中包含 20 个工
  • Java 套接字:InputStream.read() 与 BufferedReader.read()

    我正在从套接字的输入流中读取数据 因为我正在动态解析传入的数据 所以我需要逐个字符地读取 Does BufferedReader read 与InputStream read 做 假设 BufferedReader 是以 InputStre
  • 我有两个 Foreach 循环,它们具有相同的枚举值。那么我该如何处理呢?

    我将两个变量声明为名为 a 和 b 的 对象 并有一个简单的 SQL 任务 select code from code list 使用完整结果集 我尝试将结果传递给声明的变量 a 和 b 并在脚本任务中使用它们 a和b 两个不同的 fore
  • 如何获取协议中的所有方法?

    如何获取 Smalltalk squeak pharo 中给定协议中所有 类 方法的集合 我正在尝试收集一组方法返回的值 我不想将方法存储在实例或类变量中 所以我想我可以将它们添加到协议中并以这种方式 标记 它们 Thanks 在 Phar
  • git checkout 裸露,并在接收后包含子模块

    如何在包含子模块的接收后挂钩中检出服务器上的裸存储库 我目前将其作为接收后挂钩 bin bash http blog ekynoxe com 2011 10 22 git post receive for multiple remote b
  • 错误:超时 - 未在指定的超时内调用异步回调....DEFAULT_TIMEOUT_INTERVAL

    我有一个有角度的服务类 angular module triggerTips service userData function rootScope http log firebase this log service userData S
  • 尝试安装 Rails 时,执行 gem ... (Gem::RemoteFetcher::FetchError) 503 错误

    这是当我尝试使用 Ruby 2 1 1 和 RVM 执行 gem install Rails v 4 1 0 时出现的错误 错误 执行 gem 时 Gem RemoteFetcher FetchError 错误 响应服务不可用 503 ht
  • 如何应用Spring 5中引入的PathPatternParser?

    我想创建一个GET将文件路径作为路径变量的请求 正如 Spring 文档中所述 发现here https docs spring io spring docs current javadoc api org springframework
  • setContentView 上的另一个资源$NotFoundException

    Stack Overflow 上有很多 Resources NotFoundException 问题 我已经查看了它们并尝试了各种建议 但均无济于事 我有一个完美的工作布局来显示一些图形 下面有一些按钮 我修改了一些按钮并开始出现此错误 我
  • Ostream << 重载混乱

    当您重载类的 ostream operator lt lt ostream s const SomeClass c whatever return s 当 ostream 已经可以通过引用直接修改时 返回 ostream 有什么好处 这对我
  • 交叉引用标头中出现“未终止条件指令”错误

    有两个类在其标头中彼此相关 绘图标记 ifndef PLOTMARKER H define PLOTMARKER H include
  • Django,如何在管理界面中查看会话数据

    我在用着Django 会话 http docs djangoproject com en 1 2 topics http sessions 我想要一种在管理界面中查看会话数据的方法 这可能吗 IE 对于每个会话 我想查看存储在会话数据库中的
  • 从图中删除颜色条

    这应该很容易 但我很难做到 基本上 我在 matplotlib 中有一个子图 每次调用函数时我都会在其中绘制十六进制图 但是每次调用该函数时我都会得到一个新的颜色条 所以我真正想做的是更新颜色条 不幸的是 这似乎不起作用 因为颜色条附加的对
  • 如何使用 EasyNetQ / RabbitMQ 进行错误处理

    我在 C 中使用 RabbitMQ 和 EasyNetQ 库 我在这里使用发布 订阅模式 我还有几个问题希望大家能帮助我解决 当使用消息时出现错误时 它会自动移至错误队列 如何实现重试 以便将其放回原始队列 并且当处理 X 次失败时 将其移
  • 跟踪已输出哪些 JSON 对象

    我通过将索引设置为 a 来随机输出 20 个左右的 JSON 对象randomNumber 最初是在页面加载时 我正在单独刷新已按 timeInterval 输出的每个 JSON 对象 为了跟踪已输出的 JSON 项目 我将每个项目的索引存
  • 在 JavaScript 中获取当前会话值?

    我有一个场景 我在浏览器中打开 Web 应用程序 但在两个单独的选项卡中 在一个选项卡中 我从应用程序注销 因此所有会话值都变为空 在另一个选项卡中 我单击了网络应用程序中的锚标记 在锚标记的 jquery on click 事件中 我检查
  • 对类方法进行指针部分特化时出现“非法使用显式模板参数”

    您好 我在部分专业化方面遇到问题 我想要做的是拥有一个具有模板成员函数的类 该函数会将给定值解释为用户指定的值 例如类名是Value这是我想做的事情的一个片段 int ptr1 new int ptr1 10 Value val1 ptr1
  • 在azure上发布网站时,webjobs被删除

    当我在创建了多个 Web 作业的现有网站上发布网站时 这会删除服务器上的所有文件 并且所有 Web 作业都会被删除 我认为这是因为 webjobs 存储在 App Data 文件夹中 删除 APP Data 目录后 作业也会被删除 发布时如
  • 我应该在删除数据之前禁用聚集索引吗?

    我知道这已经像任何事情一样被讨论过 但找不到我可以接受的可靠答案 假设我有一个有100亿条记录的表 需要删除where子句中带有标识列的记录 我应该选择哪个选项 选项1 禁用索引 这将节省删除后重新排列索引的开销 但会花费更长的时间来搜索需