sql - 更新索引视图的基础表,但视图中不存在该列
问题描述
假设我有两张表,Country 和 City。
Country(id, fname, president_name)
City(id, cname, country_id_fk, mayor_name)
City 表对外键依赖于 Country 表。假设我在这样的表上创建了一个索引视图:
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
in Country 表,是否会影响CountryCity
视图。
我的意思是说影响是Country
因为我们在该表上有一个索引视图,所以在更新表期间是否会出现性能问题?
解决方案
您基本上可以拥有包含特定列的索引。当您更新其他列时,如果它们未包含在索引中,则不会应用维护其数据的操作。
此外,SQL Engine 能够为每个表维护大量索引,因此无需担心如此简单的设计。
推荐阅读
- kotlin - 如何听触摸次数?
- c# - 在 .BeginTransaction() EF Core 3.1 中调用 .SaveChangesAsync() 多少次
- sed - 遇到重音字符时,没有 \n 拆分为行的文件无法均匀拆分
- command - 用于多次删除单词的 tcl 命令
- javascript - Angular 无法读取 null 的属性“countryId”、stateId、cityName 等
- php - 使用 sqlsrv php 存储过程
- android - 安卓 ExoPlayer。负载控制。如何确定 onTrackSelected() 中正在加载哪个轨道?
- typescript - 从 JSON 动态加载组件并在 HTML 中呈现
- r - 在 RShiny 中呈现动态表的问题
- java - Apache poi“下拉”格式