天天看點

物化視圖 sql server

 物化視圖,所謂視圖實際上是不存儲實體資訊的(同表相差別,表存儲實際的資料和表的索引資訊等。),視圖僅僅存儲  一個select語句而已。而物化視圖就要視圖也存儲實際的資料,這種實際資料,就是索引。oracle   8imssqlserver2000中引入的。比如oracle的函數索引和sqlserver2000的索引視圖都是物化視圖。原因是這種視圖能夠顯著提高性能,舉個例子  

  一個表:

  create  table  mytable   (id   int   not   null,name   varchar(20)   not   null)  

  create   index   idx_mytable   on   mytable.name  

  當我們查詢的時候,

  select   *   from   mytable   where   name   like   'j%',

  優化器能夠使用索引來提高性能,然而我們遇到這種情況就不能使用索引了,如:  

  select   *   from   mytable   where   name   like   '%bing%'  

  或者  

  select   *   from   mytable   where   substring(name,1,5)='jiang'  

  這樣的情況不能使用索引  

  但引入物化視圖就不同了  

  create   view   myview(vid,vname)   as   select   id,substring(name,1,5)   from   myview.  

  然後再vname上建立索引即可顯著提高查詢性能。  

  oracle的函數索引亦是如此。  

  create   index   idx_mytable   on   mytable(upper(name))  

  --  

  就是這樣的  

http://book.51cto.com/art/200710/57893.htm

1.6.2   物化視圖

SQL Server 2005增強了索引化視圖,也叫做物化視圖。現在你可以使用一個能索引化的視圖擴充集合了。在SQL Server中還有一些可以被索引化的視圖類型,如使用下列選項的視圖:

外部連接配接(Outer Joins)。

級聯集合(Scalar Aggregates)。

ROLLUP和CUBE。

當資料庫管理者或者開發者在視圖上建立索引時,這個視圖就被物化(執行)了,并且結果集被永久地儲存在唯一聚簇索引(Clustered Index)中,儲存方式與一個有聚簇索引的表的儲存方式相同。可以在第一級唯一聚簇索引建立之後添加非聚簇的第二級索引。

索引視圖有以下兩個優點。

減除了為引用視圖的查詢動态建立結果集的管理開銷。

優化人員可以在查詢中使用視圖索引,而不需要在FROM子句中直接指定視圖。

引用索引化視圖中的相關列的現有查詢可以受益于提高了的在索引化視圖中擷取資料的效率,而且不需要重新編寫代碼。關于它們更多的介紹,請見第3章。代碼舉例,請見第6章“代碼章節”。