zoukankan      html  css  js  c++  java
  • SQL Server物化视图学习笔记

    一、 基本知识  

    摘抄自http://www.cnblogs.com/kissdodog/p/3385161.html

      SQL Server索引 - 索引(物化)视图 <第九篇>

    索引视图实际上是一种将一组唯一值“物化”为群集索引形式的视图(白话是,给视图中的唯一值列加聚集索引,然后数据会存储在硬盘中),提高查询速度。

    通过使用来自第一个索引的聚集键作为参考点,SQL Server还能在视图上建立额外的索引。

    限制如下:

    1. 如果视图引用了任何用户自定义函数,那么这些函数也必须是模式绑定的;
    2. 视图不可以引用任何其他的视图-只能引用表和UDF;
    3. 在视图中引用的所有表和UDF必须采用两部分的命名约定(例如:dbo..Customers),并且也必须具有和视图相同的所有者;
    4. 视图和视图引用的所有对象必须在相同的数据库中;
    5. 在创建视图和所有底层表时,必须打开ANSI_NULLS以及QUOTED_IDENTIFIER选项;
    6. 视图引用的任何函数必须是确定的;

            7、必须要加上WITH SCHEMABINDING, 就是绑定到架构.

      8、创建完视图后, 必须紧跟着创建一个CLUSTERED聚集唯一索引,而且必须在第一列(第一列是唯一值,类似于主键那样).

      9、只支持两部分命名的表或UDF, 如 dbo.SalesOrder. 

    10. 涉及到多个表连接时, 不支持left join 或right join的写法, 只能用from...where的方式或inner join的方式连接. (这一点有时很要命 只能用inner join太蛋疼)

    11. 不支持table.*这种懒省事的方式, 得一个一个把想要的列写清楚.

    --创建模式绑定视图
    
    CREATE VIEW PersonAge_vw
    
    WITH SCHEMABINDING
    
    AS
    
    SELECT Age,COUNT_BIG(*) AS CountAge FROM dbo.PersonTenMillion
    
    GROUP BY Age
    
     
    
    --为视图创建索引
    
    CREATE UNIQUE CLUSTERED INDEX ivPersonAge
    
    ON PersonAge_vw(Age)

    SQL Server中的索引视图也具有查询重写的功能,

      所谓的查询重写,就是如果符合条件的数据在索引视图上,并且查询列都包含在在索引视图上,此时可以直接通过查询索引视图来替代基于原始表的查询。

    如果物化视图上没有要查询的列,则物化视图无效。直接去表中查询。

    二、  详细查看物化视图执行及维护原理

    http://www.cnblogs.com/wy123/p/6041122.html

     

  • 相关阅读:
    连接查询
    分组查询
    【转载】C语言 构建参数个数不固定函数
    【转载】vc编译exe的体积最小优化
    VC6微软正则表达式greta使用案例
    MultiByteToWideChar和WideCharToMultiByte
    【转载】VC操作剪切板
    VC/MFC分割字符串(SplitString)返回CStringArray
    【转载】实现UTF8与GB2312编码格式相互转换(VC)已经验证!
    VC6配置sqlite数据库
  • 原文地址:https://www.cnblogs.com/taoshengyujiu/p/8819461.html
Copyright © 2011-2022 走看看