日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

四、物理优化(2)索引视图

發布時間:2025/4/16 编程问答 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 四、物理优化(2)索引视图 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一、視圖的概念

1.?虛擬表

  SQL?Server中的視圖是一個虛擬表,其內容由查詢定義。同真實的表一樣,視圖包含一系列帶有名稱的列和行數據。但是,視圖并不在數據庫中以存儲的數據值集形式存在。行和列數據來自由定義視圖的查詢所引用的表,并且在引用視圖時動態生成。?

?

2.?使用視圖的原因

  視圖是存儲在數據庫中的查詢的SQL?語句,它主要出于兩種原因:

(1)簡化Select?查詢

  通過視圖,不僅可以簡化用戶對數據的理解,也可以簡化他們的操作。那些被經常使用的查詢可以被定義為視圖,從而使得用戶不必為以后的操作每次指定全部的條件。

?

(2)安全原因

  視圖可以隱藏一些數據,如:薪資表,可以用視圖只顯示雇員編號、姓名等基礎信息,而不顯示身份證號碼、薪資數等敏感信息。

  SQL?Server?2005?及后續版本,將系統表隱藏起來,只提供一些系統視圖用于查看系統表的部分數據。

?

3.?對視圖的操作

  從數據庫系統內部來看,視圖是由一張或多張表中的數據組成的,從數據庫系統外部來看,視圖就如同一張表一樣,對表能夠進行的一般操作都可以應用于視圖,例如查詢、插入、修改、刪除操作等。

  對于標準視圖而言,結果集不永久存儲在數據庫中。每次查詢引用標準視圖時,SQL?Server?都會在內部將視圖的定義替換為該查詢,直到修改后的查詢僅引用基表。然后,它將照常運行所得到的查詢。生成視圖結果的過程稱為視圖具體化。

  不能對視圖創建篩選索引。但是,查詢優化器可以從對視圖中引用的表定義的篩選索引中獲益。對于從視圖中選擇數據的查詢,如果查詢結果正確,查詢優化器會考慮對此查詢使用篩選索引。

?

二、視圖的分類

1.?系統視圖

  為了防止用戶修改SQL?Server系統中的一些重要的表,系統提供了一些只讀的系統視圖。這些視圖一般屬于sys架構。

?

2.?用戶定義的視圖?

  用戶定義的視圖是通過T-SQL語句或者GUI創建的。

?

三、索引視圖

1.?概念

  SQL?Server?2000?及后續版本支持在視圖上定義索引。

?  對于涉及對大量的行進行復雜處理的非索引視圖,為引用視圖的每個查詢動態生成結果集的開銷會很大。這類視圖包括聚集大量數據或聯接許多行的視圖。若經常在查詢中引用這類視圖,可通過在視圖上創建唯一聚集索引來提高性能。在視圖上創建唯一聚集索引時將執行該視圖,并且結果集將存儲在數據庫中,就像帶有聚集索引的表一樣。

?

2.?索引視圖的好處

(1)加速查詢

  對于涉及對大量的行進行復雜處理的視圖,由于結果集已經保存為一張帶有聚集索引的表,因此無需重新計算,索引視圖有明顯的速度優勢。

?

(2)查詢優化器引用

  即使未在?FROM?子句中指定使用視圖,查詢優化器也可以使用索引視圖。這樣一來,可從索引視圖檢索數據而無需重新編碼,設計良好的索引視圖可以加快許多查詢的處理速度。例如:

CREATE?VIEW?ExampleView?WITH?SCHEMABINDING
AS
SELECT?GroupKey,?SUM(Colx)?AS?SumColx,?COUNT_BIG(Colx)?AS?CountColx
FROM?MyTable
GROUP?BY?GroupKey

  此視圖不僅能滿足直接引用視圖ExampleView?時的查詢,還可用于滿足查詢基表MyTable并包含?SUM(Colx)、COUNT_BIG(Colx)、COUNT(Colx)?和?AVG(Colx)?等表達式的查詢。因為所有這些查詢只須在視圖中檢索少量的行,而不需要從基表中讀取全部行,所以查詢速度將更快。

  同樣,聚合數據并按天分組的索引視圖可用于滿足聚合?1?天以上(如?7、30?或?90?天)的幾個不同范圍的查詢。

?

3.?索引視圖的限制

(1)版本限制

  索引視圖可以在?SQL?Server?2008?的任何版本中創建。

  在?SQL?Server?2008?Enterprise?中,查詢優化器會自動考慮索引視圖。若要在其他所有版本中使用索引視圖,則必須使用?NOEXPAND?表提示。

?

(2)索引的唯一性

  視圖的聚集索引必須唯一,從而提高了?SQL?Server?在索引中查找受任何數據更改影響的行的效率。

  必須設置特定的?SET?選項后才能在視圖上創建索引。

?

(3)維護開銷

  與基表上的索引相比,對索引視圖的維護可能更復雜。

?

?

四、創建索引視圖

http://technet.microsoft.com/zh-cn/library/ms191432(v=sql.105).aspx

1.?基本方法

  在視圖上創建聚集索引可存儲創建索引時生成的結果集。索引視圖還自動反映自創建索引后對基表數據所做的更改,這一點與在基表上創建的索引相同。當對基表中的數據進行更改時,索引視圖中存儲的數據也反映數據更改。

  視圖上的索引命名規則與表上的索引命名規則相同。唯一區別是表名由視圖名替換。

  盡管?CREATE?UNIQUE?CLUSTERED?INDEX?語句僅指定組成聚集索引鍵的列,但視圖的完整結果集將存儲在數據庫中。

  在視圖上創建的第一個索引必須是唯一聚集索引。在創建唯一聚集索引后,可創建其它非聚集索引。若除去視圖,視圖上的所有索引也將被除去。若除去聚集索引,視圖上的所有非聚集索引也將被除去??煞謩e除去非聚集索引。除去視圖上的聚集索引將刪除存儲的結果集,并且優化器將重新像處理標準視圖那樣處理視圖。

?

2.?對視圖的要求

  在對視圖創建聚集索引之前,該視圖必須符合下列要求:
(1)當執行?CREATE?VIEW?語句時,ANSI_NULLS?和?QUOTED_IDENTIFIER?選項必須設置為?ON。OBJECTPROPERTY?函數通過?ExecIsAnsiNullsOn?或?ExecIsQuotedIdentOn?屬性為視圖報告此信息。

(2)要執行所有?CREATE?TABLE?語句以創建視圖引用的表,ANSI_NULLS?選項必須設置為?ON。

(3)視圖不能引用任何其他視圖,只能引用基表。而且所有基表必須與視圖位于同一數據庫中,并且所有者也與視圖相同。

(4)必須使用?SCHEMABINDING?選項創建視圖。架構綁定將視圖綁定到基礎基表的架構。必須已使用?SCHEMABINDING?選項創建了視圖引用的用戶定義函數。

(5)表和用戶定義函數必須由視圖中由兩部分組成的名稱引用。不允許由一部分、三部分和四部分組成的名稱引用它們。

(6)視圖中的表達式引用的所有函數必須是確定的。非確定性函數,例如GETDATE、NEWID、@@total_errors等。還有一些函數在以確定性方式指定后,才可用于索引視圖,例如CAST、CONVERT、RAND等。http://technet.microsoft.com/zh-cn/library/ms178091(v=sql.105).aspx

?

3.?CREATE?INDEX語句的要求

  CREATE?INDEX?除了符合?CREATE?INDEX?的常規要求之外,還必須符合下列要求:
執行?CREATE?INDEX?語句的用戶必須是視圖所有者。
執行?CREATE?INDEX?語句時,下列?SET?選項必須設置為?ON:ANSI_NULLS、ANSI_PADDING、ANSI_WARNINGS、CONCAT_NULL_YIELDS_NULL、QUOTED_IDENTIFIER
NUMERIC_ROUNDABORT?選項必須設置為?OFF。這是默認設置。
如果數據庫在?80?或更低的兼容模式下運行,則?ARITHABORT?選項必須設置為?ON。
創建聚集索引或非聚集索引時,IGNORE_DUP_KEY?選項必須設置為?OFF(默認設置)。
即使?CREATE?INDEX?語句中未引用?text、ntext?或?image?列,視圖中也不能包含這些列。
如果視圖定義中的?SELECT?語句指定了一個?GROUP?BY?子句,則唯一聚集索引的鍵只能引用在?GROUP?BY?子句中指定的列。
構成索引鍵列值的不精確表達式必須引用視圖下基表中的存儲列。該列可以是常規存儲列,也可以是持久化計算列。其他不精確表達式不能作為索引視圖的鍵列的一部分。

?

?

五、索引視圖的應用場景?

1.?權衡

  對索引視圖的維護將增加系統開銷,因此需要權衡以下兩者:

(1)查詢視圖結果所需的開銷。如果是頻繁查詢,請考慮累計的開銷。

(2)維護索引視圖所需的開銷。

?

2.?建議

  建議以下場景:

(1)需要頻繁查詢的視圖,同時基表不具有大量更新。

(2)視圖映射在相對靜態的數據上。

(3)處理大量行或經常查詢的、帶有聯接和聚合操作的視圖。?

(4)需要復雜計算的視圖。

?

3.?索引視圖與查詢相結合

  雖然對可索引的視圖類型的限制可能使您無法設計完全解決某個問題的視圖,但仍可以設計多個較小的索引視圖,從一定程度上加快進程的速度。請考慮下列示例:

  假設有一個經常執行的查詢首先要聚合一個數據庫中的數據,然后聚合另一個數據庫中的數據,再將結果聯接起來。因為索引視圖不能引用多個數據庫中的表,所以不能設計單個視圖來完成整個處理過程。但是,您可以在每個數據庫中創建一個索引視圖,分別為每個數據庫執行聚合操作。如果優化器可以將這些索引視圖與現有查詢匹配,那么至少會加快聚合處理的速度,因為無須對現有查詢重新編碼。雖然聯接處理速度沒有加快,但因為查詢使用了索引視圖中存儲的聚合,所以總體速度將加快。

  假設有一個經常執行的查詢首先要聚合幾個表中的數據,然后使用?UNION?組合結果。索引視圖中不允許使用?UNION。同樣,您可以設計一些視圖來執行每個聚合操作。這樣一來,優化器就可以選擇索引視圖以加快查詢的速度,而無須對查詢重新編碼。盡管?UNION?處理速度沒有提高,但每個聚合進程的速度確實提高了。?

?

?

本文結語:

  維護索引視圖需要開銷,但可以提高查詢效率。企業版的查詢優化器會自動使用索引視圖。

?

總結

以上是生活随笔為你收集整理的四、物理优化(2)索引视图的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 日本少妇喂奶 | 国产 日韩 欧美在线 | 乱一色一乱一性一视频 | 麻豆视频一区二区 | 精品少妇一区二区三区免费观 | 美女的胸给男人玩视频 | 男人插女人下面视频 | 成人网站免费观看入口 | 欧美又粗又大xxxxbbbb疯狂 | 精品在线免费观看 | 国产日产欧美 | 91精选视频| 中文字幕乱码人妻无码久久 | 欧美日韩在线播放视频 | 老司机黄色片 | 99精品国产一区二区 | 国内精品久久久久 | 午夜精品在线 | 国产美女极度色诱视频www | 91丨porny丨海角社区 | 日本精品一区在线 | 裸尼姑熟蜜桃 | 国产对白刺激视频 | 亚洲天堂久久久 | sao虎视频在线精品永久 | 日本成人一区二区 | 欧美视频你懂的 | bt男人天堂 | 成人理论片 | av软件在线观看 | 成人av网址在线 | 久久er99热精品一区二区 | 国产少女免费观看高清 | 白白色视频在线 | 给我看高清的视频在线观看 | 曰韩一级片 | 免费成人深夜在线观看 | 欧洲美熟女乱又伦 | 日本午夜在线视频 | 伊人久久精品一区二区三区 | 日韩有码在线播放 | 国产成人无码aa精品一区 | 欧美日韩成人一区二区 | 亚洲精品电影 | 裸体视频软件 | 日本一区二区三区视频在线播放 | 欧美日韩高清在线 | 少妇人妻无码专区视频 | 日日操日日摸 | 国产精品久久久久久三级 | 久久婷婷色综合 | 亚洲国产成人精品女人久久 | 日本少妇ⅹxxxxx视频 | 精品国精品国产自在久不卡 | 97夜夜操| 久久丫精品国产亚洲av不卡 | 国产成人无码一区二区在线播放 | www伊人网 | 日韩欧美在线视频免费观看 | 玉女心经是什么意思 | 女生被男生桶 | 91丝袜美女| 久久亚洲av无码西西人体 | 黄色一级片在线免费观看 | 草草影院在线免费观看 | 国产高清视频免费在线观看 | 麻豆影视在线免费观看 | 成人自拍视频网站 | 一级a性色生活片久久无 | 久久久久久亚洲精品中文字幕 | 精品国产乱 | 最新中文字幕在线观看视频 | 韩国三级中文字幕 | av电影在线不卡 | 天天看天天摸 | 久久视频热 | 每日在线更新av | 人妻丰满熟妇av无码久久洗澡 | 在线成人av| 特级大胆西西4444人体 | 免费国产一区二区 | 老湿影院av | 91少妇丨porny丨| 久久久久久欧美精品se一二三四 | 91制服诱惑 | 精品一二区| 红桃视频成人 | 图片区亚洲色图 | 91精品国产麻豆国产自产在线 | 日韩久草| 国产精品观看 | 波多野结衣一区二区三区高清 | 天天看片天天干 | 欧美极品第一页 | 欧美精品免费在线观看 | 木下凛凛子av一区二区三区 | 欧美精品久久久久久久自慰 | 国产激情片| 欧美特黄色片 |