在事务期间,索引视图是否更新?

Ped*_*ice 5 sql sql-server transactions indexed-view

假设我有一个SQL Server索引视图,vwIndexedView,它从两个表中读取,tbTableOnetbTableTwo.

如果我在事务中的两个表之一上执行操作,我的索引视图会发生什么?是否立即刷新,或者我必须在结果进入之前提交我的交易?

例如:

BEGIN TRANSACTION testTransaction
INSERT INTO tbTableOne VALUES ('1', '2')
SELECT * FROM vwIndexedView
COMMIT TRANSACTION

SELECT * FROM vwIndexedView
Run Code Online (Sandbox Code Playgroud)

第一个SELECT的结果是否与第二个不同?

Rem*_*anu 10

索引或索引视图会立即更新,作为执行更新的DML语句的一部分.在您的情况下,如果您分析INSERT的实际执行计划,您将看到它包含用于更新所有物理"分区"的运算符,并且索引视图是此类分区之一.