Sli*_*345 38 sql sql-server indexing database-design
Microsoft SQL Server允许您向视图添加索引,但为什么要这样做呢?
我的理解是一个视图实际上只是一个子查询,即,如果我说SELECT*FROM myView,我真的说SELECT*FROM(myView的查询)
看起来基础表上的索引将是最重要的索引.那你为什么要在视图上有一个单独的索引呢?
Microsoft SQL Server 允许您向视图添加索引,但为什么要这样做呢?
加快查询速度。
我的理解是视图实际上只是一个子查询,即,如果我说 SELECT * FROM myView,我实际上是在说 SELECT * FROM (myView's Query)
不总是。
通过在视图上创建聚集索引,您可以具体化视图,并且对基础表的更新以物理方式更新视图。针对此视图的查询可能会也可能不会访问基础表。
并非所有视图都可以编入索引。
例如,如果您GROUP BY在视图中使用,为了使其可索引,它应该包含 aCOUNT_BIG并且其中的所有聚合函数都应该分布UNION ALL(仅SUM并且COUNT_BIG实际上是)。这是索引可维护所必需的,并且对基础表的更新可以及时更新视图。