小编S. *_*mes的帖子

将聚集索引添加到其他人应用程序上的 HEAP 表

我们正在使用基于 SQL Server 2005 的专有应用程序,它有许多基于 HEAP 的表(即没有聚集索引)。多年来,这些表变得非常碎片化(例如 99% 碎片化)。我需要对它们进行碎片整理。

现在,在 SQL Server 2005 中,没有办法直接做到这一点。我可以:

  1. 在先前存在的字段上创建聚集索引,并保留它
  2. 创建该索引,重建表,然后删除它
  3. 添加我自己的字段(例如自动增量键)

现在,这是一个由供应商编写的大型应用程序——一个巨大的黑匣子。我并不急于弄乱他们的东西。我不太了解这些表是如何使用的。这样做的影响最小的方法是什么?

而且,作为后续:有许多这些基于 HEAP 的表,应用程序使用了十多个数据库。有没有办法自动选择 #2 或 #3?或者,我应该如何选择要修改的表?


更新:
回答(非常有帮助的)回复提出的问题:

  • 性能是不可接受的。供应商告诉我的客户他们这是因为表非常碎片化,客户有责任定期对它们进行碎片整理
  • 我们有两个应用程序实例:测试实例和生产实例
  • 我首先对所有 Clustered 表进行了碎片整理,这大大提高了性能
  • 供应商的支持团队非常没有帮助。他们告诉我们整理表格是我们的责任。当我问他们如何建议对基于 HEAP 的表进行碎片整理时 - 我应该添加聚集索引吗?- 他们只回答“这是微软的问题”。

简而言之,客户支持团队已经明确表示:您必须对表格进行碎片整理,如何做是您的事。

至于未来的版本:是的,新版本正在开发中,最终会迁移到 SQL Server 2012。但是他们今天需要性能解决方案。

最后,至于碎片整理时间太长:没关系。他们有 99% 碎片化的巨型表;该应用程序不在夜间使用;我可以轻松地一次花费数小时对它们进行碎片整理。

performance sql-server optimization clustered-index index-tuning

7
推荐指数
2
解决办法
1883
查看次数