视图与索引视图或实例化视图之间的差异



我对这两者感到困惑,并试图找出差异,但没有找到我正在寻找的特定内容。

  • 在何处使用索引视图而不是普通视图。
  • 它们之间的一些重要区别。

关键的区别在于物化的观点是很好的,物化的。这基本上意味着数据被持久化到由SQL Server本身维护的虚拟表中。

这既有好处也有问题。显著优势:

  • 常用查询可以封装在视图中并编制索引,以提高读取性能(例如,比较从单个表中运行选择与连接 5 个表(
  • 聚合可以预先计算,还可以提高读取性能

缺点:

  • 它肯定会影响写入性能,因为对于每个 DML 操作,SQL Server 都必须更新视图。这可以在执行计划中观察到
  • 如果订阅服务器从复制表创建材料视图,则可能会对复制性能产生负面影响
  • 创建
  • 索引视图有很多限制
  • 如果您使用的是非企业 SQL Server 版本,则必须添加WITH (NOEXPAND)提示,否则 SQL Server 将展开视图,只在其中运行 SQL 语句并完全忽略索引。
  • DBA 通常倾向于避免使用它们,因为它们会增加额外的维护。

视图(未索引(实际上只不过是一种将查询放入一个漂亮、干净、类似表格的东西中的方法。它不占用任何空间,因为在查询之前它不包含任何内容。对于您可以或不能在所述查询中输入的内容几乎没有限制。

索引视图只是他们在锡上所说的。它们是视图,但已编入索引。这意味着它具体化视图并通过事务日志和其他内容使其保持最新。

为什么不为每个视图编制索引?基本上,它们带有一系列限制,维护和阻塞问题的可能性,并且您失去了普通视图的许多轻量级性质。

归根结底,如果您需要索引视图,则需要索引视图。但默认情况下,它们可能比它们的价值更麻烦。

最新更新