SQL Server 如何更新索引视图?

Faj*_*iya 9 sql-server materialized-view

每次在索引视图引用的基表中插入、更新或删除数据时,数据库引擎都会自动更新索引视图以反映更改。但是,我不太确定数据库引擎如何更新索引视图。它是否完全重新运行视图中的查询,或者是否使用更有效的方法仅更新相应的部分?

Pau*_*ite 10

SQL Server 不会在每次更改后完全重建视图。那将是非常低效的。相反,索引视图是使用delta algebra增量维护的。查询处理器确定基表更改对视图的净影响,并仅应用使视图更新所需的那些更改。

在简单的情况下,它可以仅根据基表更改和当前存储在视图中的数据计算必要的增量。在视图定义包含联接的情况下,执行计划的索引视图维护部分也需要访问联接表,但是如果给定适当的基表索引,这通常可以有效地执行。

欲了解更多详情,请参阅: