假设我有一个 SQL Server 索引 View vwIndexedView,它从两个表 tbTableOne 和 tbTableTwo 中读取。
如果我对事务内的两个表之一执行操作,我的索引 View 会发生什么?它是立即刷新,还是我必须在结果输入之前提交我的事务?
例如:
BEGIN TRANSACTION testTransaction
INSERT INTO tbTableOne VALUES ('1', '2')
SELECT * FROM vwIndexedView
COMMIT TRANSACTION
SELECT * FROM vwIndexedView
第一个 SELECT 的结果会与第二个不同吗?
最佳答案
作为执行更新的 DML 语句的一部分,索引或索引 View 会立即更新。在您的情况下,如果您分析 INSERT 的实际执行计划,您将看到它包含用于更新所有物理“分区”的运算符,并且您的索引 View 就是此类分区之一。
关于sql - 索引 View 在事务期间更新吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1089331/