MySQL檢視的實現和限制

2019-10-16 22:56:05

在本教學中,您將了解MySQL檢視,我們將解釋並演示MySQL如何實現檢視。

MySQL 5.x 版本之後支援資料庫檢視。 在MySQL中,檢視的幾乎特徵符合SQL:2003標準。 MySQL以兩種方式處理對檢視的查詢:

  • 第一種方式,MySQL會根據檢視定義語句建立一個臨時表,並在此臨時表上執行傳入查詢。
  • 第二種方式,MySQL將傳入查詢與查詢定義為一個查詢並執行組合查詢。

MySQL支援版本系統的檢視。每次檢視被更改或替換時,檢視的副本將在駐留在特定資料庫檔案夾的arc(archive)檔案夾中備份。備份檔案的名稱為view_name.frm-00001。如果再次更改檢視,MySQL將建立一個名為view_name.frm-00002的新備份檔案。

MySQL允許基於其他檢視建立檢視。在檢視定義的SELECT語句中,可以參照另一個檢視。

MySQL檢視的限制

不能在檢視上建立索引。當使用合併演算法的檢視查詢資料時,MySQL會使用底層表的索引。對於使用誘惑演算法的檢視,當您針對檢視查詢資料時,不會使用索引。

MySQL 5.7.7之前版本,是不能在SELECT語句的FROM子句中使用子查詢來定義檢視的。

如果刪除或重新命名檢視所基於的表,則MySQL不會發出任何錯誤。但是,MySQL會使檢視無效。 可以使用CHECK TABLE語句來檢查檢視是否有效。

一個簡單的檢視可以更新表中資料。基於具有連線,子查詢等的複雜SELECT語句建立的檢視無法更新。

MySQL不像:OraclePostgreSQL等其他資料庫系統那樣支援物理檢視,MySQL是不支援物理檢視的。