我对这两者感到困惑,并试图找出差异,但没有找到我正在寻找的特定内容。
- 在何处使用索引视图而不是普通视图。
- 它们之间的一些重要区别。
关键的区别在于物化的观点是很好的,物化的。这基本上意味着数据被持久化到由SQL Server本身维护的虚拟表中。
这既有好处也有问题。显著优势:
- 常用查询可以封装在视图中并编制索引,以提高读取性能(例如,比较从单个表中运行选择与连接 5 个表(
- 聚合可以预先计算,还可以提高读取性能
缺点:
- 它肯定会影响写入性能,因为对于每个 DML 操作,SQL Server 都必须更新视图。这可以在执行计划中观察到
- 如果订阅服务器从复制表创建材料视图,则可能会对复制性能产生负面影响 创建
- 索引视图有很多限制
- 如果您使用的是非企业 SQL Server 版本,则必须添加
WITH (NOEXPAND)
提示,否则 SQL Server 将展开视图,只在其中运行 SQL 语句并完全忽略索引。 - DBA 通常倾向于避免使用它们,因为它们会增加额外的维护。
视图(未索引(实际上只不过是一种将查询放入一个漂亮、干净、类似表格的东西中的方法。它不占用任何空间,因为在查询之前它不包含任何内容。对于您可以或不能在所述查询中输入的内容几乎没有限制。
索引视图只是他们在锡上所说的。它们是视图,但已编入索引。这意味着它具体化视图并通过事务日志和其他内容使其保持最新。
为什么不为每个视图编制索引?基本上,它们带有一系列限制,维护和阻塞问题的可能性,并且您失去了普通视图的许多轻量级性质。
归根结底,如果您需要索引视图,则需要索引视图。但默认情况下,它们可能比它们的价值更麻烦。