首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫

SQL Server 2000 索引檢視表:大幅提升查詢效能的關鍵技術

     編輯:MySQL 資料庫相關知識

什麼是索引檢視表?

Microsoft SQL Server 自早期版本以來便支援建立虛擬資料表(檢視表),主要用於兩大目的:提供安全機制限制使用者存取基底資料表的特定子集,以及讓開發人員自訂使用者邏輯檢視儲存資料的方式。

SQL Server 2000 大幅擴充檢視表功能,引入索引檢視表機制。當在檢視表上建立唯一叢集索引時,該檢視表即成為索引檢視表,其結果集會立即實體化並持久儲存在資料庫實體儲存空間中,避免每次查詢都重複計算聯結與彙總,從而大幅改善複雜查詢的資料存取效能。

注意:索引檢視表僅在 SQL Server 2000 企業版與開發人員版中提供。

索引檢視表如何運作?

從 DBMS 觀點看,檢視表是中繼資料的描述。傳統檢視表在查詢執行時才即時實體化,聯結與彙總等運算會在每次參考該檢視表的查詢中重複進行。建立唯一叢集索引後,檢視表結果集預先計算並持久化儲存,查詢優化器可直接使用這些預計算結果。

查詢使用索引檢視表有兩種方式:

  1. 直接引用:查詢明確指定索引檢視表名稱。
  2. 自動匹配:查詢優化器判定索引檢視表可替換查詢的部分或全部邏輯且成本較低時,自動選擇使用,現有應用程式完全無需修改即可受益。

索引檢視表帶來的效能提升

索引檢視表超越傳統索引,在三大面向提升查詢效能:

  • 預先計算彙總:將昂貴的彙總運算結果儲存在索引中,查詢執行時無需重複計算。
  • 預先聯結資料表:將聯結後的資料集持久化,省去執行時的聯結開銷。
  • 聯結與彙總的組合:同時儲存聯結後再彙總的結果,針對複雜報表查詢效果顯著。
查詢優化器使用索引檢視表時的效能提升幅度

圖 1. 查詢優化器使用索引檢視表時一般能提升多少效能(含百萬列大資料表實測)

輔助非叢集索引:更多優化選擇

除了叢集索引,檢視表上也可建立非叢集輔助索引。當查詢涉及叢集索引未涵蓋的欄位時,優化器可選擇輔助索引避免全表掃描。但索引需要持續維護,會增加資料庫額外負擔,必須在索引效益與維護成本間尋找平衡點。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved