这与多列索引(复合)和单列索引无关。性能不仅仅是功能。
我有一种情况,我需要将多个索引应用于同一张表。现在,我要检查它们是否存在,然后一个接一个地应用它们。
我的问题是,从头到尾的总时间要花全部几个小时才能全部应用。我想尽可能减少总时间(减少应用它们的时间窗口)
一个接一个地
index1 => index2 = index3 =>...indexN
所有元素同时应用于表
index1
index2
index3
...
indexN
某些表上的索引计数为10+,有多个表,这将应用于多个数据库(几百个)我对数据存储或SQL Server的SAN魔术类型没有任何控制权东西。我有16个处理器和一个Enterprise服务器,但是所有数据库中所有表的总数都是不小的。考虑多个GB行表计数和多个TB存储大小(将近3000个表中的所有行)。这些都是聚集索引,大多数都是复合索引
答案 0 :(得分:0)
虽然似乎没有一种简单的方法可以完成此任务,但是如果通过对一个相当大的表进行测试发现,该表应用了10个具有单独查询和配置的新索引,并同时同时处理(所有操作均始于确实比单个脚本快,在单个脚本中,索引是以串行方式应用的。如果SQL Server有足够的资源来处理这种影响,那么这似乎也不会产生负面影响。
只需在这里更新范围和规模而不必太具体:
实际结果示例与将9到14小时的完成时间减少到少于43分钟一致,所有索引同时应用于一个表,并且在一个数据库以及200多个单独的数据库中对多个表建立索引。数TB的数据大小。