mysql視圖能建立索引嗎

青灯夜游
發布: 2022-06-28 18:46:21
原創
6718 人瀏覽過

mysql視圖不能建立索引。視圖是一種虛擬存在的表,並非實際存在於資料庫中,它是沒有實際行和列的(行和列的資料來自於定義視圖的查詢中所使用的表);而索引是一種特殊的資料庫結構,由資料表中的一列或多列組合而成,因此視圖中不能建立索引,沒有主鍵,也不能使用觸發器。

mysql視圖能建立索引嗎

本教學操作環境:windows7系統、mysql8版本、Dell G3電腦。

mysql檢視不能建立索引。

MySQL 視圖(View)是一種虛擬存在的表,並非實際存在於資料庫中,它是沒有實際行和列的;行和列的數據來自於定義視圖的查詢中所使用的表,並且還是在使用視圖時動態產生的。

資料庫中只存放了視圖的定義,並沒有存放視圖中的數據,這些數據都存放在定義視圖查詢所引用的真實表中。使用視圖查詢資料時,資料庫會從真實表中取出對應的資料。因此,視圖中的資料是依賴真實表中的資料的。一旦真實表中的資料改變,顯示在視圖中的資料也會改變。

而索引是一種特殊的資料庫結構,由資料表中的一列或多列組合而成,可以用來快速查詢資料表中有某一特定值的記錄。本節將詳細講解索引的意思、作用和優缺點。

透過索引,查詢資料時不用讀完記錄的所有信息,而只是查詢索引列。否則,資料庫系統將讀取每筆記錄的所有資訊進行比對。

因此:索引由資料表中的一列或多列組合而成,而視圖是一種虛擬存在的表,沒有實際行和列的;進而mysql視圖不能建立索引。

擴充知識:mysql檢視

mysql檢視本質上就是語句,當你呼叫檢視的時候資料庫管理系統會先去找檢視中封裝的語句,先執行產生檢視的語句,再在檢視的基礎上進行查詢

#檢視的優點

##檢視與表格本質上雖然不相同,但視圖經過定義以後,結構形式和表格一樣,可以進行查詢、修改、更新和刪除等操作。同時,視圖具有以下優點:

1) 客製化使用者數據,聚焦特定的資料

在實際的應用過程中,不同的使用者可能對不同的資料有不同的要求。

例如,當資料庫同時存在時,如學生基本資訊表、課程表和教師資訊表等多種表同時存在時,可以根據需求讓不同的使用者使用各自的資料。學生查看修改自己基本資訊的視圖,安排課程人員查看修改課程表和教師資訊的視圖,教師查看學生資訊和課程資訊表的視圖。

2) 簡化資料操作

在使用查詢時,很多時候要使用聚合函數,同時還要顯示其他欄位的信息,可能還需要關聯到其他表,語句可能會很長,如果這個動作頻繁發生的話,可以建立視圖來簡化操作。

3) 提高資料的安全性

視圖是虛擬的,物理上是不存在的。可以只授予使用者視圖的權限,而不具體指定使用表格的權限,來保護基礎資料的安全。

4) 共享所需數據

透過使用視圖,每個用戶不必都定義和儲存自己所需的數據,可以共享資料庫中的數據,同樣的數據只需要儲存一次。

5) 更改資料格式

透過使用視圖,可以重新格式化擷取的數據,並組織輸出到其他應用程式。

6) 重用SQL 語句

視圖提供的是對查詢操作的封裝,本身不包含數據,所呈現的資料是根據視圖定義從基礎表中檢索出來的,如果基礎表格的資料新增或刪除,視圖呈現的也是更新後的資料。視圖定義後,編寫完所需的查詢,可以方便地重複使用該視圖。

要注意區別視圖和資料表的本質,即視圖是基於真實表的一張虛擬的表,其資料來源均建立在真實表的基礎上。

使用視圖的時候,也應該注意以下幾點:

  • 建立視圖需要足夠的存取權限。

  • 建立視圖的數目沒有限制。

  • 檢視可以嵌套,也就是從其他檢視擷取資料的查詢來建立檢視。

  • 檢視不能索引,也不能有關聯的觸發器、預設值或規則。

  • 檢視可以和表格一起使用。

  • 視圖不包含數據,所以每次使用視圖時,都必須執行查詢中所需的任何一個檢索操作。如果用多個連接和過濾條件創建了複雜的視圖或嵌套了視圖,可能會發現系統運作效能下降得十分嚴重。因此,在部署大量視圖應用程式時,應該進行系統測試。

【相關推薦:mysql影片教學

以上是mysql視圖能建立索引嗎的詳細內容。更多資訊請關注PHP中文網其他相關文章!

相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板