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

推荐订阅源

量子位
Stack Overflow Blog
Stack Overflow Blog
人人都是产品经理
人人都是产品经理
The GitHub Blog
The GitHub Blog
Engineering at Meta
Engineering at Meta
Vercel News
Vercel News
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
Y
Y Combinator Blog
The Cloudflare Blog
Last Week in AI
Last Week in AI
B
Blog
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
T
Tailwind CSS Blog
V
Visual Studio Blog
博客园 - 三生石上(FineUI控件)
小众软件
小众软件
Google DeepMind News
Google DeepMind News
D
DataBreaches.Net
博客园 - 司徒正美
B
Blog RSS Feed
Microsoft Azure Blog
Microsoft Azure Blog
罗磊的独立博客
Hugging Face - Blog
Hugging Face - Blog
L
LangChain Blog

博客园 - 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)。其次从执行计划来看,添加索引视图后,明显多了一个分支,这个分支就是根据视图定义来生成数据,然后物理存储。