开发学院数据库MSSQL Server 【探讨】索引视图如何提高性能 阅读

【探讨】索引视图如何提高性能

 2010-01-25 00:00:00 来源:WEB开发网   
核心提示: • 查询优化器不将查询与索引视图相匹配,重新检查视图和查询的定义,【探讨】索引视图如何提高性能(8),确保两者在结构上可相匹配,CASTS、converts 以及其他在逻辑上不会更改查询结果的表达式可能会阻止匹配,行会在逻辑上从基于 OUTER JOIN 的索引视图上消失,这会使执行

• 查询优化器不将查询与索引视图相匹配。重新检查视图和查询的定义,确保两者在结构上可相匹配。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 的视图慢一些。

上一页  3 4 5 6 7 8 

Tags:探讨 索引 视图

编辑录入:爽爽 [复制链接] [打 印]
[]
  • 好
  • 好的评价 如果觉得好,就请您
      0%(0)
  • 差
  • 差的评价 如果觉得差,就请您
      0%(0)
赞助商链接