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

推荐订阅源

Microsoft Azure Blog
Microsoft Azure Blog
aimingoo的专栏
aimingoo的专栏
F
Fortinet All Blogs
Blog — PlanetScale
Blog — PlanetScale
GbyAI
GbyAI
MongoDB | Blog
MongoDB | Blog
月光博客
月光博客
The Cloudflare Blog
量子位
T
Tailwind CSS Blog
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
B
Blog
MyScale Blog
MyScale Blog
T
The Blog of Author Tim Ferriss
The GitHub Blog
The GitHub Blog
G
Google Developers Blog
D
DataBreaches.Net
V
Visual Studio Blog
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
Last Week in AI
Last Week in AI
U
Unit 42
博客园 - 聂微东
有赞技术团队
有赞技术团队
A
About on SuperTechFans

博客园 - 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-25 · via 博客园 - ideas

  在视图上建的第一个索引必须是聚集索引,因为聚集索引的叶级包含了所有数据,此索引实际上确实对视图进行了物化(持久化存储)。视图的数据被物理地存储在聚焦索引的叶级别中。

  索引视图要求所有用到的函数都必须是确实性的。且视图定义不能包含任何下列元素:

  1. TOP
  2. text、ntext或者image字段
  3. DISTINCT
  4. MIN、MAX、COUNT(*)、COUNT(<表达式>)、STDEV、VARIANCE、AVG
  5. 可空类型的表达式上进行SUM
  6. 派生表
  7. ROWSET 函数
  8. 其它视图(只能引用基准表)
  9. UNION
  10. 子查询、OUTER连接或者自连接
  11. 全文索引谓词(CONTAINS、FREETEXT)
  12. COMPUTE,COMPUTE BY
  13. ORDER BY

  如果视图定义包含GROUP BY,就必须在SELECT列表中包括聚合函数COUNT_BIG(*)。COUNT_BIG会返回BIGINT数据类型的值,是一个8字节长整型。含有GROUP BY子句的视图不能包含HAVING、CUBE、ROLLUP 或者GROUP BY ALL。所有的GROUP BY字段也必须出现在SELECT列表中。注意:如果视图包含了SUM和COUNT_BIG(*),即使索引视图中不允许AVG函数,仍然可以计算得到等价于AVG函数的结果。尽管这些限制可能看起来十分严格,但是谨记它们只是针对视图的定义,而并不针对可能使用索引视图的那些查询。

  可以使用OBJECTPROPERTY函数的IsIndexable属性来检验是否已经满足了所有需求。下面查询反映了是否可以一张名为ProductTotals的视图上创建索引。

SELECT ObjectProperty(object_id('productTotals'), 'IsIndexable')

创建索引视图:

--注意下面的“WITH SCHEMABINDING”子句以及表中指明的架构名称(dbo)。
CREATE VIEW v_test_news
      WITH SCHEMABINDING
AS
      SELECT NewsId,CASE WHEN NewsUrl<>'' AND IsDelete=0 AND IsVerify=1 ANDIsUserPost=0 THEN 1 ELSE 0 END AS IsShow
            FROM dbo.news

创建索引:

CREATE UNIQUE clustered INDEX idx_v_main ON v_test_news(NewsId)