惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

IT之家
IT之家
博客园 - 聂微东
雷峰网
雷峰网
Microsoft Azure Blog
Microsoft Azure Blog
WordPress大学
WordPress大学
Hugging Face - Blog
Hugging Face - Blog
S
SegmentFault 最新的问题
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
T
Tailwind CSS Blog
博客园 - 三生石上(FineUI控件)
V
Visual Studio Blog
博客园 - 司徒正美
爱范儿
爱范儿
月光博客
月光博客
阮一峰的网络日志
阮一峰的网络日志
博客园_首页
博客园 - 【当耐特】
Jina AI
Jina AI
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
酷 壳 – CoolShell
酷 壳 – CoolShell
大猫的无限游戏
大猫的无限游戏
小众软件
小众软件
人人都是产品经理
人人都是产品经理
V
V2EX

博客园 - ideas

从 datetime2 数据类型到 datetime 数据类型的转换产生一个超出范围的值。 移除google搜索结果中烦人的URL跟踪跳转 关于分页存储过程的优化【让数据库按我们的意思执行查询计划】 DiscuzNT首页版块提取优化 中国娱乐网招聘asp.net软件工程师 几个有用的DMV查询 【转】Iframe高度自适应(兼容IE/Firefox、同域/跨域) 【转】MAQETTA: 基于HTML5的开源可视化界面设计工具 高效能人士的七个习惯 有《基于行块分布函数的通用网页正文抽取》想到的 MongoDB 学习笔记—MapReduce MongoDB系列文章推荐 【转】linux screen 命令详解 - [linux] 索引视图 添加计算列,并创建索引 浏览器的加载与页面性能优化【转】 IO瓶颈 内存瓶颈 Windows Live Writer 插件 Source Code Plug-in
关于添加索引视图后的数据存储区别
ideas · 2011-02-28 · via 博客园 - ideas

  为基表添加索引视图后,在INSERT新的数据时,索引视图是如何添加数据的?是通过扫描基表来更新视图?还是根据视图定义直接计算后加入索引视图?下面是分析案例。

  现有基表news,数据行5280,数据页240 。在未创建索引视图的情况与添加数据:

INSERT news (title,ShortTitle,NewsMemo,NewsTypeId,IsDelete,IsVerify,IsUserPost)
 VALUES('hello test title','hello ShortTitle','hello memo', 35, 0, 1, 0)

结果是“逻辑读取 2 次”,执行计划如图:a

下面为基表添加索引视图:

CREATE VIEW v_test_news
      WITH SCHEMABINDING
AS
      SELECT NewsTypeId,COUNT_BIG(*) as NewsCount FROM dbo.news GROUP BY NewsTypeId;

GO

CREATE UNIQUE clustered INDEX idx_v_main ON v_test_news(NewsTypeId);
GO

然后再向基表添加数据,结果是:

/*表 'v_test_news'。扫描计数 0,逻辑读取 6 次,
表 'Worktable'。扫描计数 2,逻辑读取 7 次,
表 'news'。扫描计数 0,逻辑读取 2 次,*/

执行计划如图:b

结论:首先通过IO的次数来看,在添加索引视图后再向基表添加数据时,并没有去扫描基表(因为基表有240页,如果扫描基表至少要240次IO)。其次从执行计划来看,添加索引视图后,明显多了一个分支,这个分支就是根据视图定义来生成数据,然后物理存储。