SQL Server:合并(插入/更新)后的非聚集索引

格里高利

我是SQL Server的新手,试图优化我从前同事那里收到的程序(我不能问他)。

在最后一步,该过程使用一条MERGE语句更新一个大表之后,它将丢弃两个非聚集索引并再次创建它们。这样做的目的是什么?是否不定期收集优化程序的统计信息?重新创建索引是为优化器提供最新统计信息的唯一方法吗?

谢谢

汤姆汤姆

之后,它将丢弃两个非聚集索引并再次创建它们。这样做的目的是什么?

将它们组织到更少的空间,而不会在合并过程中发生页面拆分。通常,根本不需要-完全一样。这也许是有道理的,但是在执行此操作之前,最好先分析有关页面拆分的索引统计信息,除非您可以确定它对每次加载都有益。

是否不定期收集优化程序的统计信息?

它们是,但是重新组织索引可能会使它们更有效。随着数据的变化,索引页中的数据也会发生变化,当数据溢出时,页面将被拆分。这导致索引(nto统计信息)随着时间的推移而变得不平衡,这可能会导致额外的IO负载。

重新创建索引是为优化器提供最新统计信息的唯一方法吗?

不。但是您首先不要为统计而这样做。您可以根据需要更新统计信息。您这样做是为了获得有效的索引。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

SQL Server:聚集索引比等效的非聚集索引慢得多

在SQL Server中使用非聚集索引

SQL Server 非聚集索引 - 包括值

SQL Server:创建非聚集索引而不给其命名

sql server 如何在复合非聚集索引中查找?

具有多列的SQL Server非聚集索引

在SQL中对大数据使用聚集索引与非聚集索引

SQL Server非聚集索引扫描或索引取决于值

SQL Server索引-在组合键字段上创建非聚集索引有什么好处?

SQL Server:触发后插入,更新

在SQL Server更新查询后插入

说服SQL Server在聚集索引上向后搜索仅插入模式

在sql server中创建非聚集索引的最大varchar长度是多少?

在SQL Server的非聚集索引中可以包含很多列吗?

多列非聚集索引中的列顺序在SQL Server中是否重要?

非唯一列上的SQL Server聚集索引

是否可以通过在其他索引中包含列来“链接” SQL Server中的非聚集索引?

索引视图上的SQL Server列存储聚集索引

SQL查询优化:从非聚集索引获取额外的列数据

SQL Server中的唯一键是聚集索引还是非聚集索引?

插入更新和删除后的 SQL Server 触发器

SQL Server 2008+聚集索引的排序顺序

PostgreSQL的CLUSTER与SQL Server中的聚集索引有何不同?

如何通过 SQL Server 中的提示禁用聚集索引?

SQL Server:为临时表创建聚集索引

向当前使用的 SQL Server 添加聚集索引的影响

插入触发器以插入非零值后的SQL Server

使用插入和更新模拟SQL合并

插入到...合并...选择(SQL Server)