資源描述:
《sql server中用索引視圖查看性能狀況--》由會員上傳分享,免費在線閱讀,更多相關內容在學術論文-天天文庫。
1、SQLServer中用索引視圖查看性能狀況>> 在SQLServer中,視圖是一個保存的T-SQL查詢。視圖定義由SQLServer保存,以便它能夠用作一個虛擬表來簡化查詢,并給基表增加另一層安全。但是,它并不占用數據庫的任何空間。實際上,在你查詢它之前,視圖并不做任何事情?! ∷饕晥D 在SQLServer2000和2005中,你能夠給視圖增加索引。但是,如果視圖只是一個保存在數據庫中的查詢定義,在運行前沒有自己的數據,你如何給那個定義建立一個索引呢?嗯,這比較麻煩。 索引視圖是一個已被物化或保存在數據庫中的視圖。當基本表更新時,給視圖建立的索引由數據庫引擎保存和更新。當你的結果集返回
2、許多行并且需要求總數時,索引視圖十分有用。這是因為數據庫引擎必須在基表數據更新時維持視圖索引,這可能會降低事務的性能。 要給一個視圖建立一個索引,視圖定義必須遵守某組條件和會話設置,同時要求把基表和視圖定義聯系起來。如果你確定你的視圖滿足這些標準(我將在后面討論這一點),你給視圖建立的第一個索引必須是一個唯一的聚集索引。建立的第一個視圖必須在一組欄上,并且被聚集,以便索引被物化。 下面代碼說明如何建立一個索引視圖。其中的腳本將建立SalesHistory表,并給它加載數據。CREATETABLESalesHistory( SaleIDINTIDENTITY(1,1),
3、 ProductVARCHAR(30), SaleDateSMALLDATETIME, SalePriceMONEY)DECLAREiSMALLINTSETi=1ERIC_ROUNDABORTOFFGO 現在你可以建立自己的視圖。為使事情更加簡單,我建立一個嶄新的視圖。CREATEVIE(ISNULL(SalePrice,0))ASTotalSalesFROMdbo.SalesHistoryGROUPBYProductGO 下面的腳本給我們的視圖建立索引:CREATEUNIQUECLUSTEREDINDEXidx_SalesViewONvw_SalesByProdu
4、ct_Indexed(Product) 為表明已經給視圖建立一個索引,并且它確實占用數據庫的空間,運行下面的腳本查明聚集索引有多少行以及視圖占用多少空間。EXECUTEsp_spaceused'vw_SalesByProduct_Index12下一頁>>>>這篇文章來自..,。ed' 下面的SELECT語句和以前的語句相同,只是這次它執(zhí)行一個聚集索引搜索,這個過程完成得非???。SELECTProduct,TotalSales,ProductCountFROMvw_SalesByProduct_IndexedWHEREProduct='puter' 不要忘記
5、性能測試 索引視圖如果使用得當,它會十分有用,因為它們能夠顯著地提高查詢的性能。但是,由于聚集索引增加的性能,數據庫引擎必須在視圖基表的所有事務過程中維持那個索引。因為這個交換,建立一個索引視圖可能對系統有益,也可能給系統造成傷害。確定這樣做是有益還是有害的最佳方法就是進行全面的性能測試。上一頁12>>>>這篇文章來自..,。