SQL Server 2008 R2:如何使用;暂停”;写入服务器时的聚集索引

本文关键字:服务器 索引 聚集 暂停 2008 Server R2 何使用 SQL | 更新日期: 2023-09-27 18:29:56

我想知道在写入大容量数据时是否可以"暂停"聚集索引?

原因是:

  • 如果我在"DateTime"上有聚集索引,则大容量插入速度较慢(10000行/秒)
  • 如果我在"DateTime"上有一个非活动聚集索引,则大容量插入速度很快(1180000行/秒)

我不介意集群索引是否在一夜之间重建,例如从凌晨1点到6点。

SQL Server 2008 R2:如何使用;暂停”;写入服务器时的聚集索引

您不能禁用聚集索引并仍然使用该表

由于聚集索引是表,禁用它意味着您无法访问任何数据。

来自MSDN:

除非删除或重新生成聚集索引,否则无法访问禁用的聚集索引的数据行。

你可以。。。

  • 禁用任何非聚集索引并在一夜之间重新生成它们。这将大有帮助
  • DROP所有索引(包括聚集的)并插入,然后CREATE它们过夜。不过,这将使该表基本上不可用

我更喜欢的解决方案有点复杂:

  • INSERT转换为与目标表具有相同聚集索引键的暂存表
  • INSERT从转移到目标过夜,然后根据需要更新索引