mysql中視圖沒有索引。視圖是一張虛擬的表,並不真實的存在於資料庫中,所以也就沒有主鍵、索引,因為視圖沒有行和列,本質上就是語句,當調用視圖時系統先執行生成視圖的語句,然後在視圖的基礎上進行查詢。
本教學操作環境:windows10系統、mysql8.0.22版本、Dell G3電腦。
視圖沒有索引,視圖是一張虛擬表,並不真實存在在資料庫中,所以也就沒有什麼主鍵、索引,因為根本就沒有行和列,本質上就是語句,當你呼叫視圖的時候資料庫管理系統會先去找視圖中封裝的語句,先執行生成視圖的語句,再在視圖的基礎上進行查詢
視圖中不能使用索引,也不能使用觸發器(索引和觸發器後面會分析)
使用可以和普通的表一起使用,編輯一條聯結視圖和普通表的sql語句是允許的。
關於使用視圖對數據的進行更新(增刪改),因為視圖本身並沒有數據,所以這些操作都是直接作用到普通表中的,但也並非所有的視圖都可以進行更新操作,如視圖中存在分組(group by)、聯結、子查詢、並(unoin)、聚合函數(sum/count等)、計算字段、DISTINCT等都不能對視圖進行更新操作,因此我們前面的例子也是不能進行更新操作的,事實上,視圖更多的是用於資料檢索而更新,因此對於更新也沒有必要進行過多闡述。
視圖的本質
到此對於視圖的創建和使用都比較清晰了,現在準備進一步認識視圖的本質,前面我們反覆說過,視圖是一張虛擬表,是不帶任何資料的,每次查詢時只是從普通表中動態地獲取資料並組合,只不過外表看起來像一張表罷了。其原理透過下圖便一目了然:
事實上有些時候視圖還會被用來限制使用者對普通表的查詢操作,對於這類使用者只賦予對應視圖的select操作權限,僅讓他們只能讀取特定的行或列的資料。這樣我們也就不用直接使用資料庫的權限來設定限制行列的讀取,同時也避免了權限細化的麻煩。
推薦學習:mysql影片教學
#以上是mysql視圖有索引嗎的詳細內容。更多資訊請關注PHP中文網其他相關文章!