3 回答

TA貢獻1868條經(jīng)驗 獲得超4個贊
一般來說,沒有。視圖主要用于方便和安全,而不是用于提高速度。
也就是說,SQL Server 2000及更高版本確實有一個稱為索引視圖的特殊功能,可以極大地提高性能,但您必須按照一組非常具體的指南創(chuàng)建索引視圖。
在線書籍中有關(guān)于視圖分辨率的重要參考。
多年來,Microsoft?SQLServer?支持創(chuàng)建稱為視圖的虛擬表的功能。從歷史上看,這些觀點主要用于以下目的:
提供一種安全機制,將用戶限制在一個或多個基表中的某個數(shù)據(jù)子集。
提供一種機制,允許開發(fā)人員自定義用戶如何邏輯查看存儲在基表中的數(shù)據(jù)。
使用SQL Server 2000,SQL Server視圖的功能得到了擴展,從而提供了系統(tǒng)性能優(yōu)勢??梢栽谝晥D上創(chuàng)建唯一的聚簇索引以及非聚簇索引,以提高最復(fù)雜查詢的數(shù)據(jù)訪問性能。在SQL Server 2000和2005中,具有唯一聚簇索引的視圖稱為索引視圖。

TA貢獻1876條經(jīng)驗 獲得超6個贊
至少在SQL Server中,查詢計劃基于查詢/視圖參數(shù)存儲在計劃緩存中,用于視圖和普通SQL查詢。對于兩者而言,當它們在未使用足夠長的時間段時從緩存中刪除,并且對于其他一些新提交的查詢需要空間。之后,如果發(fā)出相同的查詢,則重新編譯它,并將計劃放回緩存中。所以不,沒有區(qū)別,因為您正在重復(fù)使用相同的SQL查詢和具有相同頻率的相同視圖。
顯然,一般來說,一個視圖,就其本質(zhì)而言(有人認為它經(jīng)常被足夠使用以使其成為一個視圖)通常比任何任意SQL語句更有可能被“重用”。
添加回答
舉報