更新索引视图的基础表,但视图中不存在该列

时间:2020-10-16 06:54:44

标签: sql sql-server tsql view indexed-view

假设我有两个表格,“国家”和“城市”。

Country(id, fname, president_name)
City(id, cname, country_id_fk, mayor_name)

城市表对国家/地区表具有外键依赖性。假设我在像这样的表上创建了索引视图:

CREATE VIEW CountryCity
WITH SCHEMABINDING
AS
    SELECT Country.fname, City.cname
    FROM Country INNER JOIN City
    ON Country.id = City.country_id_fk;
GO

并在该视图上创建唯一的聚簇索引

CREATE UNIQUE CLUSTERED INDEX ucidx_cc
ON CountryCity(cname, fname);
GO

请注意,我在视图中没有president_name。如果我更新“国家/地区”表中的president_name,会影响CountryCity视图。

我要说的是会影响Country表中的更新,因为我们在该表上有索引视图,所以会出现性能问题吗?

1 个答案:

答案 0 :(得分:1)

基本上,您可以具有包含特定列的索引。在更新其他列时,如果索引中未包含其他列,则不会应用任何维护其数据的操作。

此外,SQL引擎能够为每个表维护很多索引,因此不必担心这种简单的设计。

相关问题