SQL Server視圖索引如何在底層工作?我讀過這TechNet article,但它並沒有解釋視圖索引如何實際工作。任何人都可以向我解釋這個嗎?SQL Server視圖索引如何在底層工作?
注意:我不確定這是否應該在SF上。如果應該的話,就把它移到那邊。
SQL Server視圖索引如何在底層工作?我讀過這TechNet article,但它並沒有解釋視圖索引如何實際工作。任何人都可以向我解釋這個嗎?SQL Server視圖索引如何在底層工作?
注意:我不確定這是否應該在SF上。如果應該的話,就把它移到那邊。
在查詢編譯期間,SQL編譯器將在元數據中看到索引視圖定義,並將生成執行計劃,該計劃將索引視圖數據與表一起維護。例如:
create table foo (a int not null,
constraint pkfoo primary key (a))
GO
create view vFoo
with schemabinding
as
select a from dbo.foo
GO
create unique clustered index cdxvFoo on vFoo(a)
GO
insert into foo (a) values (1);
GO
如果你看看INSERT語句,你會看到它包含聚集索引插入,一進foo.pkFoo和一成vFoo.cdxvFoo的執行計劃。與任何刪除或更新類似。
我不得不引用一些課程筆記以獲得正確的答案,我記得索引視圖包含行數,並根據基礎表中的更改更新預聚合的數據。 (就像一個正常的索引。)
它具體包含的總和和計數,以便它可以處理插入/更新和刪除。 (調整總和和計數然後表示結果)。通過這種方式,視圖可以輸出平均值(總和/計數),但不會存儲平均值,因爲它無法根據新數據對其進行調整。
據我所知,索引視圖的存儲方式與普通索引相同,使用B-Tree,數據頁,並擁有自己的IAM。
這就是我所記得的我的頭頂。