【探讨】索引视图如何提高性能
2010-01-25 00:00:00 来源:WEB开发网• 查询优化器不将查询与索引视图相匹配。重新检查视图和查询的定义,确保两者在结构上可相匹配。CASTS、converts 以及其他在逻辑上不会更改查询结果的表达式可能会阻止匹配。另外,表达式规范化和等价以及 SQL Server 执行的归入测试方面存在一些限制。可能无法显示某些等价表达式是相同的,或者逻辑上被其他表达式归入的表达式被真正归入,因此可能会错失匹配。
(4)每周更新一次数据仓库。索引视图使查询速度大大提升,却降低了每周更新的速度?该怎么办呢?
可以考虑在每周更新前丢弃索引视图,更新完后再重新创建。
(5)视图存在重复项目,而想对其进行维护。该怎么办呢?
可以考虑创建一个视图,按您所要的视图中的所有列和表达式进行分组,并添加一个 COUNT_BIG(*) 列,然后在组合的列上创建一个唯一的聚集索引。
分组过程可确保唯一性。虽然不是完全相同的视图,但可以满足您的需要。
(6)在一个视图上定义了另一个视图。SQL Server 不让索引顶级视图。该怎么办呢?
可以考虑手动将嵌套视图的定义扩展到顶级视图,然后对其进行索引(索引最低层的视图,或者不索引该视图)。
(7)为何一定要对索引视图定义 WITH SCHEMABINDING?
• 使用 schemaname.objectname 明确识别视图所引用的所有对象,而不管是哪个用户访问该视图,同时
• 不会以导致视图定义非法或强制 SQL Server 在该视图上重新创建索引的方式,更改视图定义中所引用的对象。
(8)为何不能在索引视图中使用 OUTER JOIN?
当将数据插入基表时,行会在逻辑上从基于 OUTER JOIN 的索引视图上消失。这会使执行 OUTER JOIN 视图的增量更新变得相对复杂,而执行性能将比基于标准 (INNER) JOIN 的视图慢一些。
赞助商链接