频繁删除后需要重新组织/重建索引吗?

时间:2016-09-07 08:25:02

标签: sql-server tsql

我有一个包含4000万行(并且正在增长)的表,其中包含一个标识主键聚簇索引和一个非聚集索引。

我经常需要删除旧的或过时的信息。

因为这是一个经常采取的行动,我是否应该关注碎片并计划对索引进行一些维护以保持性能?

应该是什么,或者我应该如何评估两个索引的最佳操作:

REBUILD还是REORGANIZE?

2 个答案:

答案 0 :(得分:2)

您需要问的问题是索引碎片是否实际上导致您遇到任何问题。

我认为拥有某种索引维护脚本是个好主意。如果您使用Ola Hallegren的脚本,那么您可以设置重建/重组的阈值(例如,重组的碎片超过50%,重建时超过80%),这可以在几小时内连续运行。您还可以设置阈值,以便它只考虑超过特定大小的索引,这样您就不会在微小索引上进行不必要的重建。

这是指所述脚本的链接;

https://ola.hallengren.com/sql-server-index-and-statistics-maintenance.html

答案 1 :(得分:1)

使用此行数和这些操作是的,您应该关注碎片,因为性能可能会降低。根据我读过的几篇文章,我实现了像这样的索引碎片整理:

  • 如果碎片小于5%则不做任何事
  • 如果碎片在5%到30%之间,请执行“重新组织”
  • 如果碎片大于30%,请执行重建

您可以在此处获取有关索引碎片的更多详细信息:http://blog.sqlauthority.com/2010/01/12/sql-server-fragmentation-detect-fragmentation-and-eliminate-fragmentation/ 在这里http://www.schneider-electric.com/en/faqs/FA234246/

您可以分析索引碎片的演变,然后每晚或每周一次(或其他频率)选择碎片整理