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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM