如何解决SQL Server:合并插入/更新后的非聚集索引
我是SQL Server的新手,它试图优化我从前同事那里收到的程序(我不能问他)。
在最后一步,该过程使用MERGE
语句更新大表。之后,它将丢弃两个非聚集索引并再次创建它们。这样做的目的是什么?是否不定期收集优化程序的统计信息?重新创建索引是为优化器提供最新统计信息的唯一方法吗?
谢谢
解决方法
此后,它将丢弃两个非聚集索引并再次创建它们。目的是什么 这样吗?
将它们组织到较小的空间中,而不会在合并期间发生页面拆分。通常,根本不需要-完全一样。也许是有道理的,但是在这样做之前,最好先分析一下有关页面拆分的索引统计数据,否则要好得多,除非您可以确定它对每次加载都是有益的。
是否不定期收集优化程序的统计信息?
是的,但是重新组织索引可能会使它们更有效。随着数据的变化,索引页中的数据也会发生变化,当数据溢出时,页面将被拆分。这会导致索引(nto统计信息)随着时间的推移而变得不平衡,从而可能导致额外的IO负载。
重新创建索引是为优化器提供最新统计信息的唯一方法吗?
不。但是,首先不要为统计而这样做。您可以根据需要更新统计信息。您这样做是为了获得有效的索引。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。