共計 916 個字符,預計需要花費 3 分鐘才能閱讀完成。
本篇內容主要講解“MySQL 視圖的概念”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓丸趣 TV 小編來帶大家學習“MySQL 視圖的概念”吧!
1、基本概念
視圖本身是一張虛擬表,不存放任何數據。在使用 SQL 語句訪問視圖的時候,獲取的數據是 MySQL 從其它表中生成的,視圖和表在同一個命名空間。視圖查詢數據相對安全,視可以隱藏一些數據和結構,只讓用戶看見權限內的數據,使復雜的查詢易于理解和使用。
2、視圖用法
現在基于用戶和訂單管理演示視圖的基本用法。
基礎表結構
基本語法
CREATEORREPLACEVIEWview_name
ASselect_statement
注意事項:表和視圖共享數據庫中相同的名稱空間,因此,數據庫不能包含具有相同名稱的表和視圖。
用戶訂單視圖
CREATEORREPLACE
VIEWuser_order_viewASSELECT
t1.id,t1.user_name,t2.order_no,t2.good_id,
t2.good_name,t2.num,t2.total_price
FROMv01_usert1
LEFTJOINv02_ordert2ONt2.user_id=t1.id;
視圖調用
這里和 MySQL 的表查詢基本一致,可以使用各種查詢條件。
視圖實現
臨時表算法
服務器會把視圖查詢 SQL 的數據保存在臨時表中,臨時表的結構和視圖字段結構一致,這樣是 SQL 查詢優化中最忌諱的操作,數據量稍微偏大,就會嚴重影響性能。如果視圖無法和原有表產生一對一的映射關系,就會產生臨時表,由此也可見視圖并不是很簡單,甚至是非常復雜的功能。
合并算法
服務器基于視圖中使用的表執行查詢,最后把查詢結構合并后返回給客戶端。
區別方法
執行如下查詢語句,可以分析執行的性能參數。
EXPLAINSELECT*FROMuser_order_view;
觀察查詢結果中 select_type 字段,如果是 DERIVED 則說明使用臨時表。這里 SQL 執行分析的語法后面優化部分再詳解。
到此,相信大家對“MySQL 視圖的概念”有了更深的了解,不妨來實際操作一番吧!這里是丸趣 TV 網站,更多相關內容可以進入相關頻道進行查詢,關注我們,繼續學習!