如何在视图上实现聚集索引

Rav*_*avi 4 sql-server indexing view clustered-index indexed-view

我可以在视图上创建聚簇索引或非聚簇索引,SQL SERVER说,我们可以有多个非聚集索引(最大249),但表或视图上只存在一个聚簇索引.因为,记录被排序,它们在物理上存储的地方,我们不能有多个排序顺序.所以,我的问题是,因为View没有物理存储在数据库中.那么,如果我在视图和基表上创建聚簇索引已经存在聚簇索引.如何在视图上实现聚集索引?聚集索引如何工作并对视图有用?

Aar*_*and 5

除非具有聚簇索引,否则视图只是一个没有物化数据的存储查询.

在许多情况下,人们认为通过添加聚集索引可以"加速"任何旧视图.这种情况很少发生.通常,您创建索引视图以预先聚合某些计算,例如SUM或COUNT_BIG.如果你创建一个没有聚合的索引视图,因此与基表有相同数量的行/页面,你还没有实现任何目标(当然,有任何例外,有例外 - 视图上的索引可能是比基表更瘦,例如,导致更少的页面).

另外,除非首先创建聚簇索引,否则无法在视图上创建非聚集索引.您还应该记住,就像表上的索引一样,索引视图不是免费的.虽然它可能会加速某些查询,但SQL Server必须在整个工作负载的DML部分维护索引.

你真的应该阅读像这样的文档,它更详细地介绍索引视图的性能优势,以及这个文档中的限制和限制.