日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術文章
文章詳情頁

MySQL 視圖(View)原理解析

瀏覽:180日期:2023-10-02 17:38:05
目錄可更新視圖視圖的性能視圖的限制

MySQL 5.0以后引入了視圖。視圖實際是一個自身不存儲數據的虛擬數據表。實際這個虛擬表的數據來自于訪問視圖的 SQL 查詢的結果。MySQL 處理視圖和處理數據表差不多,通過這種方式來滿足很多需求。視圖和數據表在 MySQL 中共享命名空間,然而 ,MySQL 處理而二者的方式并不相同,例如,視圖沒有觸發器,并且無法使用 DROP TABLE 移除視圖。

下面以 world 樣例數據庫為例來展示視圖的工作機制。

CREATE VIEW Oceania ASSELECT * FROM Country WHERE Continent = ’Oceania’ WITH CHECK OPTION;

實現視圖最簡單的方式是執行SELECT查詢語句并將結果放入到一張臨時表中。之后,就可以在視圖出現的地方引用這張臨時表。例如下面的查詢語句:

SELECT Code, Name FROM Oceania WHERE Name = ’Australia’;

下面是服務端執行上面語句可能的形式(臨時表名稱是隨意取的,實際內部不知道是什么):

CREATE TEMPORARY TABLE TMP_Oceania_123 AS SELECT * FROM Country WHERE Continent = ’Oceania’;SELECT Code, Name FROM TMP_Oceania_123 WHERE NAME = ’Australia’;

這種形式顯然存在性能問題,最好的方式是將視圖和查詢的分布查詢改為一句 SQL 語句,如下所示:

SELECT Code, Name FROM CountryWHERE Continent = ’Oceania’ AND Name = ’Australia’;

在 MySQL 中會使用兩種算法,稱之為 MERGE 和 TEMTABLE,而且會盡可能地使用 MERGE 算法。甚至,MySQL 能夠將嵌套視圖進行合并。下圖是兩種算法的區別:

MySQL 視圖(View)原理解析

當視圖中有 GROUP BY,DISTINCT,聚集函數,UNION,子查詢或其他數據表之間不是一對一的關系時,MySQL 會使用 TEMPTABLE算法。如果想知道視圖是使用 MERGE 還是 TEMPTABLE,可以使用 EXPLAIN 指令檢查:

EXPLAIN SELECT * FROM <視圖名稱>;

如果在 select_type 中有 DERIVED 的話,則表示使用了 TEMPTABLE 算法。因此,如果隱藏的衍生表需要很高的代價產生,EXPLAIN 就會變得性能很低并且執行起來很慢,這是因為它需要實際執行和構建衍生表。這個算法是視圖的屬性而不會受到查詢類型的影響。例如,假設創建視圖的時候指定了算法,那么以后針對這個視圖的查詢都不會更改算法,即便有優化的空間:

CREATE ALGORITHM=TEMPTABLE VIEW v1 ASSELECT * FROM Country;可更新視圖

可更新視圖可以通過視圖更新隱藏的基礎表,只要指定的條件保持,就可以使用 UPDATE,DELETE 甚至是 INSERT 操作,就像操作普通表一樣,例如下面的操作是有效的:

UPDATE Oceania SET Population = Population * 1.1 WHERE NAME = ’Australia’;

如果視圖包括 GROUP BY,UNION,聚合函數或其他的一些概念,那么該視圖就不可更新。所有使用了 TEMPTABLE 算法的視圖都不可以更新。

CHECK OPTION 子句用于保證任何通過視圖更改的數據行在更改后需要保持與視圖的 WHERE條件匹配。例如上面的例子,如果插入了一條 Continent 值不同的行,服務端就會報錯。

視圖的性能

很多人不會考慮使用視圖提升性能,但是在某些情況下視圖是可以提高性能的。而且還可以用視圖去提升其他方面的性能,例如,在表結構重構時,被修改的數據表的視圖不經修改也可以使用。還可以使用視圖實現字段權限控制而不增加創建列權限的負荷:

CREATE VIEW public.employeeinfo ASSELECT firstname, lastname --不包含身份證號 FROM private.employeeinfo;GRANT SELECT ON public.* to public_user;

使用 TEMPTABLE 算法的視圖性能可能很糟糕(雖然也有可能比等效的 SQL 查詢性能高)。這種視圖可優化的空間不高。

視圖可能讓開發者誤以為視圖很簡單,而事實上視圖非常復雜。如果開發者不懂的試圖的復雜性,那么就不會注意到視圖與普通表查詢之間的差別。如果使用EXPLAIN 指令的話有時候會發現產生上百行的分析結果輸出,這是因為實際看起來是數據表的查詢實際是視圖,而視圖可能引用其他數據表甚至是其他視圖。

在使用視圖改進性能時,需要仔細分析和測試。即便是 MERGE 算法的視圖也會增加額外的負擔,而且很難預測對性能的影響。視圖實際在 MySQL 中使用了另外的優化途徑。在高并發場景,視圖可能導致查詢優化器耗費大量時間在做計劃和統計,甚至導致服務端卡頓。這個時候需要使用普通的 SQL 來替代視圖。

視圖的限制

MySQL 不像其他數據庫服務器那樣支持物理視圖(物理視圖即產生并將結果存在一個不可見的數據表中,并周期性地更新以從源數據刷新視圖)。MySQL 也不支持視圖的索引。MySQL 也不會保留視圖的原始 SQL,如果我們視圖通過執行 SHOW CREATE VIEW 指令去編輯視圖,并且更改返回結果 SQL,會發現結果很奇特。查詢SQL會按規范展開,并且使用內部的格式包裹,且沒有格式化、注釋和縮進。

以上就是MySQL 視圖(View)原理解析的詳細內容,更多關于MySQL 視圖(View)原理的資料請關注好吧啦網其它相關文章!

標簽: MySQL 數據庫
相關文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
国产精品hd| 欧美视频久久| 久久gogo国模啪啪裸体| 亚洲精品裸体| 国产精品女主播一区二区三区| 麻豆精品蜜桃| 欧美成人午夜| 久久精品一区二区不卡| 蜜桃久久久久| 成人久久一区| 亚洲免费在线| 久久成人一区| 日本a口亚洲| 97精品国产一区二区三区| 国产一卡不卡| 国产在线不卡一区二区三区 | 激情六月综合| 狠狠干成人综合网| 日韩一区二区免费看| 91成人在线网站| 91一区二区三区四区| 亚洲一区二区日韩| 国产精品xx| 丝袜美腿亚洲一区二区图片| 国产欧美高清| 波多野结衣一区| 久久精品国产免费| 久久国产日本精品| 国产日韩一区| 香蕉久久99| 欧美精品不卡| 亚洲尤物在线| 精品国产亚洲一区二区在线观看| 欧美久久天堂| 亚洲精品极品| 热三久草你在线| 日本中文字幕一区二区| 美女国产精品久久久| 欧美91视频| 麻豆久久精品| 综合激情网...| 黑丝一区二区| 99精品电影| 久久最新视频| 国产日韩三级| 香蕉久久久久久久av网站| 青青国产91久久久久久| 午夜视频精品| 国产美女精品| 免费看久久久| 日韩国产欧美三级| 精品一区二区三区中文字幕| 91精品99| 亚洲欧洲高清| 国产精品亚洲欧美一级在线| 五月国产精品| 国产91精品对白在线播放| 蜜臀91精品一区二区三区| 日韩精品中文字幕第1页| 久久精品av麻豆的观看方式| 亚洲精品一区二区妖精| 国产成人久久| 国产亚洲一卡2卡3卡4卡新区| 久久男女视频| 国产精品一区二区免费福利视频| 国产一区二区精品| 亚州av一区| 黄色在线一区| 久久久精品久久久久久96| 精品国产精品国产偷麻豆| 国产一区三区在线播放| 欧美国产专区| 夜久久久久久| 国产韩日影视精品| 日韩精品久久久久久久电影99爱| 欧美激情亚洲| 久久青草久久| 人人香蕉久久| 国产一区日韩欧美| 91精品国产调教在线观看| 成人亚洲一区| 美女视频网站久久| 成人午夜亚洲| 国产一区二区三区成人欧美日韩在线观看| 亚洲一区日韩在线| 精品在线播放| 国产欧美午夜| 激情五月综合| 伊人精品在线| 免费欧美一区| 成人午夜亚洲| 国产视频一区免费看| 香蕉国产精品| 丝袜亚洲另类欧美 | 成人av三级| 免费看av不卡| 国产精品66| 精品国产麻豆| 成人啊v在线| 日韩中文av| 久久国产生活片100| 美女精品在线| 国产成人精品一区二区三区视频| 久久精品国产99久久| 中文日韩在线| 亚洲一区国产| 91亚洲成人| 91久久久久| 亚洲a级精品| 欧美在线亚洲综合一区| 日韩在线一二三区| 欧美另类中文字幕| 成人日韩在线观看| 中文字幕一区二区三区日韩精品 | 欧美在线黄色| 久久久久99| 视频一区在线视频| 精品视频久久| 视频一区日韩精品| 日韩精品首页| 欧美一区不卡| 偷拍欧美精品| 国产精品精品| 国产精品一区二区精品视频观看| 91精品日本| 日韩伦理在线一区| 国产日韩欧美中文在线| 亚洲一区二区动漫| 国产精品福利在线观看播放| 男人操女人的视频在线观看欧美| 精品一区二区三区视频在线播放 | 精品国产亚洲一区二区三区在线| 视频在线在亚洲| 精品丝袜在线| 青草国产精品| 日韩精品中文字幕一区二区| 中文日韩欧美| 国产精品久久观看| 国产无遮挡裸体免费久久| 99精品综合| 精品国产美女a久久9999| 欧美日韩夜夜| 9国产精品视频| 精品91久久久久| 亚洲精品看片| 午夜电影亚洲| 美国三级日本三级久久99| 精品一区在线| 亚洲精品少妇| 免费欧美一区| 日韩欧美另类中文字幕| 樱桃成人精品视频在线播放| 美腿丝袜亚洲一区| 只有精品亚洲| 中文字幕一区二区三区四区久久| 国内精品福利| 亚洲午夜久久久久久尤物| 亚洲大全视频| 中文在线不卡| 91精品国产自产观看在线| 日韩va欧美va亚洲va久久| 日韩国产一二三区| 国产精品亚洲二区| 首页国产精品| 午夜影院一区| 国产美女撒尿一区二区| 日韩在线看片| 激情欧美亚洲| 成人看片网站| 夜夜嗨网站十八久久| 麻豆成人在线| 国产一区丝袜| 亚洲免费播放| 日韩高清不卡一区二区| 久久精品国产亚洲aⅴ| 日韩大片在线播放| 99在线观看免费视频精品观看| 婷婷精品在线观看| 麻豆国产精品| 天堂久久av| 国产成人精品亚洲线观看| 亚洲成人二区| 日本亚洲最大的色成网站www | 精品视频久久| 欧美不卡高清| 国产亚洲电影| 日韩精品一区二区三区免费观看| 日韩成人亚洲| 欧美偷窥清纯综合图区| 亚洲免费福利| 亚洲人www| 亚洲小说欧美另类婷婷| 久久精品一本| 亚洲国产一区二区三区在线播放| 欧美日韩一区自拍| 夜鲁夜鲁夜鲁视频在线播放| 日韩成人av影视| 欧美色图国产精品| 欧美男人天堂| 日韩精彩视频在线观看|