我加入了一些表,並希望創建一些表或視圖中更容易對查詢做到數據的快速分析。使用組合數據創建新表格或新視圖的含義是什麼?MySQL數據庫中TABLE和VIEW之間有什麼區別?
目前我正在連接表是靜態的,但是這個代碼可以被移動到我們未來的生活表。
我加入了一些表,並希望創建一些表或視圖中更容易對查詢做到數據的快速分析。使用組合數據創建新表格或新視圖的含義是什麼?MySQL數據庫中TABLE和VIEW之間有什麼區別?
目前我正在連接表是靜態的,但是這個代碼可以被移動到我們未來的生活表。
這是一個輕微的過分簡化,但一個視圖基本上是一個表返回結果(在行和列),然後您可以查詢,如果它是它自己的表的一個保存的查詢。
在MySQL 5.0中,觀點是不是所有的偉大,因爲它每次使用時執行的基礎查詢,所以真的沒有多大意義對他們(儘管它們可能是代碼重用有用)。但是,從5.0開始可能已經發生了變化。
所以如果查詢創建我的看法花了10分鐘來執行,查詢視圖上至少要花query_time_min + 10分鐘(也過於簡單化了)? – 2011-05-18 15:54:54
我相信是這樣,除非它自5.0起改變。查詢緩存和其他內部的「mysql是聰明的」機制可能會稍微減輕它(因此過分簡化部分),但是......或多或少。 – 2011-05-18 17:01:57
表中存儲的數據
一個觀點是像select * from table
一個存儲過程後保存在數據庫中使用
你可以有連接兩個表的視圖,然後從該視圖,而不連接子句選擇但得到一個加入的結果
所以如果創建我的視圖的查詢需要10分鐘執行,那麼視圖上的查詢至少需要query_time_min + 10min(這可能是過度簡化)? – 2011-05-18 16:21:58
@T。布賴恩瓊斯 - 有點 - 但對視圖的查詢將花費相同的時間來執行自己的sql執行。 – Rob 2011-05-18 16:25:54
小心的意見,因爲他們不一定正確的基礎表中使用索引!
請參閱本文的詳細信息
http://www.mysqlperformanceblog.com/2007/08/12/mysql-view-as-performance-troublemaker/
除了Rob的解釋:
您可以授予不僅對錶,而且對視圖上的權限。有了這個,您只能訪問數據庫數據的已編譯子集。
相關提示謝謝。 – 2011-05-18 16:00:11
@T。布賴恩瓊斯 - 如果一個答案提供有用的信息,它很高興它upvote。 – 2011-06-10 13:02:20
是否創建該視圖已經重新執行每次查詢使用的視圖時查詢? – 2011-05-18 16:16:12
視圖是否更新爲您的表,該視圖在更新上運行? – 2011-05-18 16:16:48
是的,更新基礎表將更新視圖「現場」。 – 2011-05-18 17:03:33