sql - View 与索引 View 或物化 View 的区别

标签 sql sql-server sql-server-2014

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

  • 在哪里使用索引 View 而不是普通 View 。
  • 它们之间的一些重要区别。
  • 最佳答案

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

    这既有好处,也有问题。显着的好处:

  • 可以将常用查询封装在 View 中并建立索引以提高读取性能(比较从单个表运行选择与例如连接的 5 个表)
  • 聚合可以预先计算,也可以提高读取性能

  • 缺点:
  • 它肯定会影响写入性能,因为对于每个 DML 操作,SQL Server 都必须更新 View 。这可以在执行计划中观察到
  • 如果订阅者从复制表创建 Material View ,它会对复制性能产生负面影响
  • 为了创建索引 View 有很多限制
  • 如果您使用的是非企业 SQL Server 版本,WITH (NOEXPAND)必须添加提示,否则 SQL Server 将扩展 View 并只在其中运行 SQL 语句而完全忽略索引。
  • DBA 通常倾向于避免使用它们,因为它们会增加额外的维护。
  • 关于sql - View 与索引 View 或物化 View 的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52326565/

    相关文章:

    for 循环内的 C# 查询仅返回一个值

    SQL 将多行转换为多列

    具有列号的 SQL 循环

    sql - 向 WHERE 子句添加聚合函数?

    php - 将 MSSQL 和 MySQL 与 CodeIgniter 结合使用

    sql - 如何根据其他列值将单列值拆分为多列

    mysql - 如何根据and条件获取数据

    sql-server - 触发器/If 语句中的 SQL Server 本地化区分大小写比较

    sql - 删除另一行时如何更新 SQL 表?

    java - 如何使用 Hibernate 作为持久性提供程序在 JPA 中添加 "outer join conditions with ON clause"?