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

您的位置:首頁技術(shù)文章
文章詳情頁

MySQL 視圖(View)原理解析

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

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

下面以 world 樣例數(shù)據(jù)庫為例來展示視圖的工作機(jī)制。

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

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

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

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

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 能夠?qū)⑶短滓晥D進(jìn)行合并。下圖是兩種算法的區(qū)別:

MySQL 視圖(View)原理解析

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

EXPLAIN SELECT * FROM <視圖名稱>;

如果在 select_type 中有 DERIVED 的話,則表示使用了 TEMPTABLE 算法。因此,如果隱藏的衍生表需要很高的代價產(chǎn)生,EXPLAIN 就會變得性能很低并且執(zhí)行起來很慢,這是因?yàn)樗枰獙?shí)際執(zhí)行和構(gòu)建衍生表。這個算法是視圖的屬性而不會受到查詢類型的影響。例如,假設(shè)創(chuàng)建視圖的時候指定了算法,那么以后針對這個視圖的查詢都不會更改算法,即便有優(yōu)化的空間:

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

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

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

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

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

視圖的性能

很多人不會考慮使用視圖提升性能,但是在某些情況下視圖是可以提高性能的。而且還可以用視圖去提升其他方面的性能,例如,在表結(jié)構(gòu)重構(gòu)時,被修改的數(shù)據(jù)表的視圖不經(jīng)修改也可以使用。還可以使用視圖實(shí)現(xiàn)字段權(quán)限控制而不增加創(chuàng)建列權(quán)限的負(fù)荷:

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

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

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

在使用視圖改進(jìn)性能時,需要仔細(xì)分析和測試。即便是 MERGE 算法的視圖也會增加額外的負(fù)擔(dān),而且很難預(yù)測對性能的影響。視圖實(shí)際在 MySQL 中使用了另外的優(yōu)化途徑。在高并發(fā)場景,視圖可能導(dǎo)致查詢優(yōu)化器耗費(fèi)大量時間在做計劃和統(tǒng)計,甚至導(dǎo)致服務(wù)端卡頓。這個時候需要使用普通的 SQL 來替代視圖。

視圖的限制

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

以上就是MySQL 視圖(View)原理解析的詳細(xì)內(nèi)容,更多關(guān)于MySQL 視圖(View)原理的資料請關(guān)注好吧啦網(wǎng)其它相關(guān)文章!

標(biāo)簽: MySQL 數(shù)據(jù)庫
相關(guān)文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
日韩欧美精品| 免费精品国产| 免费看欧美美女黄的网站| 激情婷婷欧美| 亚洲特色特黄| 婷婷久久一区| 亚洲精品888| 国产一区白浆| 丝袜美腿亚洲一区二区图片| 亚洲一区二区三区四区五区午夜 | 国产精品黄网站| 国产乱码精品一区二区亚洲| 国产女人18毛片水真多18精品| 日韩高清一区| 久久国产精品免费一区二区三区| 欧美亚洲人成在线| 国产精品久久久久久久免费软件| 精品一区av| 日韩国产欧美一区二区| 国产粉嫩在线观看| 久久影视一区| 男人的天堂亚洲一区| 日韩高清中文字幕一区| 国产精品久久久久久久久免费高清| 国产精品视频一区二区三区综合| 国产在视频一区二区三区吞精| 国产99在线| 亚洲欧洲一区二区天堂久久| 亚洲精品成人一区| 欧美黄页在线免费观看| 神马久久午夜| 最新亚洲激情| 日本欧美大码aⅴ在线播放| 国产极品久久久久久久久波多结野| 久久天堂影院| 国产精品av久久久久久麻豆网| 99pao成人国产永久免费视频| 日韩福利视频网| 国产精品99视频| 亚洲高清激情| 日韩精品视频在线看| 久久精品一区二区三区中文字幕| 日韩精品2区| 亚洲免费毛片| 精品不卡一区| 久久av在线| 精品视频在线观看网站| 国产韩日影视精品| 欧美日韩夜夜| 欧美日韩在线网站| 日韩专区视频网站| 中文在线中文资源| 中文字幕日本一区二区| 成人三级高清视频在线看| 蜜桃视频第一区免费观看| 激情中国色综合| 一区二区电影| 日韩欧美自拍| 日本一区二区三区视频在线看 | 日韩av黄色在线| 国产成人精品一区二区三区免费 | 国产日产一区| av一区二区高清| 欧美日韩一区二区国产| 久久精品亚洲欧美日韩精品中文字幕| 亚洲综合福利| 日本欧美不卡| 清纯唯美亚洲综合一区| 激情久久久久久久| 久久精品伊人| 日韩黄色av| 99日韩精品| 国产91在线精品| 中文精品在线| 精品欧美一区二区三区在线观看| 日本免费新一区视频| 欧美精品一区二区久久| 精品在线网站观看| 少妇精品久久久一区二区| 99精品一区| 久久精品国产网站| 亚洲影院天堂中文av色| 日本国产精品| 久久久精品区| 日韩欧美三区| 黄色av一区| 日本在线精品| 久久中文精品| 亚洲男人在线| 国产亚洲精品v| 久久黄色影院| 精品国内亚洲2022精品成人| 青草av.久久免费一区| 日韩视频一区二区三区在线播放免费观看 | 日韩欧美精品| 精品深夜福利视频| 久久精品99国产精品日本| 亚洲一区二区小说| 日韩视频二区| 激情综合亚洲| 亚洲成av人片一区二区密柚| 国产精品tv| 欧美午夜网站| 日韩av黄色在线| 亚州精品视频| 亚洲永久精品唐人导航网址| 99国产精品视频免费观看一公开| 91精品国产调教在线观看| 国产不卡一区| 精品一区二区三区的国产在线观看| 国产调教一区二区三区| 日韩精品一页| 日本综合精品一区| 在线精品一区二区| 国产欧美一区二区精品久久久| 天堂中文在线播放| 免费成人在线影院| 国产中文一区| 国产传媒在线观看| 日韩电影免费在线观看| 欧美国产日本| 久久国产直播| 夜夜嗨一区二区| 福利在线免费视频| 国产激情综合| 久久九九国产| 久久国产精品久久w女人spa| 亚洲网址在线观看| 国产毛片久久久| 国产精品一区二区三区av麻| 国产精品国码视频| 日韩国产一区二区三区| 岛国av在线播放| 性色av一区二区怡红| 玖玖玖国产精品| 久久激情五月婷婷| 国产在线一区不卡| 国产欧美在线| 亚洲成av在线| 日韩不卡一二三区| 亚洲精品国产偷自在线观看| 色88888久久久久久影院| 欧美亚洲福利| 国产字幕视频一区二区| 国产欧美日韩亚洲一区二区三区| 男人操女人的视频在线观看欧美| 九九在线精品| 91国内精品| 人在线成免费视频| 日韩精品免费一区二区三区| 久久精品免费一区二区三区| 在线一区免费观看| 蜜臀久久99精品久久久久宅男| 视频精品一区| 麻豆精品在线| 精精国产xxxx视频在线野外| 日韩一级精品| 日韩激情啪啪| 精品成av人一区二区三区| 精品亚洲美女网站| 久久国产精品毛片| 婷婷亚洲精品| 欧美精品1区| 欧美中文一区二区| 石原莉奈一区二区三区在线观看| 日本精品另类| 亚洲女同av| 久久亚洲欧洲| 美腿丝袜亚洲一区| 黄色aa久久| 久久亚洲视频| 精品国产91| 亚洲欧美日韩专区| 蜜桃久久久久| 夜夜嗨网站十八久久| 国产伦精品一区二区三区千人斩| 日本一区二区免费高清| 九九久久婷婷| 国产免费av一区二区三区| 久久久精品网| 日韩二区三区在线观看| 欧美日韩在线观看首页| 一区二区三区国产盗摄| 日韩不卡一区| 蜜臀久久99精品久久久久久9| 欧美黑人巨大videos精品| 激情婷婷综合| 国产精品igao视频网网址不卡日韩| 91精品精品| 欧美一区激情| 欧美 日韩 国产精品免费观看| 亚洲欧洲av| 日韩av免费| 国产精品亚洲欧美日韩一区在线 | 精品午夜av| 男女激情视频一区| 国产v日韩v欧美v| 亚洲1区在线| 欧美日韩在线播放视频| 麻豆一区在线|