mysql視圖有索引嗎

mysql中視圖沒有索引。視圖是一張虛擬的表,并不真實的存在于數據庫中,所以也就沒有主鍵、索引,因為視圖沒有行和列,本質上就是語句,當調用視圖時系統先執行生成視圖的語句,然后在視圖的基礎上進行查詢。

mysql視圖有索引嗎

本教程操作環境:windows10系統、mysql8.0.22版本、Dell G3電腦。

mysql視圖有索引嗎

視圖沒有索引,視圖是一張虛表,并不真實存在在數據庫中,所以也就沒有什么主鍵、索引,因為根本就沒有行和列,本質上就是語句,當你調用視圖的時候數據庫管理系統會先去找視圖中封裝的語句,先執行生成視圖的語句,再在視圖的基礎上進行查詢

視圖中不能使用索引,也不能使用觸發器(索引和觸發器后面會分析)

使用可以和普通的表一起使用,編輯一條聯結視圖和普通表的sql語句是允許的。

關于使用視圖對數據的進行更新(增刪改),因為視圖本身并沒有數據,所以這些操作都是直接作用到普通表中的,但也并非所有的視圖都可以進行更新操作,如視圖中存在分組(group?by)、聯結、子查詢、并(unoin)、聚合函數(sum/count等)、計算字段、DISTINCT等都不能對視圖進行更新操作,因此我們前面的例子也是不能進行更新操作的,事實上,視圖更多的是用于數據檢索而更新,因此對于更新也沒有必要進行過多闡述。

視圖的本質

到此對于視圖的創建和使用都比較清晰了,現在準備進一步認識視圖的本質,前面我們反復說過,視圖是一張虛擬表,是不帶任何數據的,每次查詢時只是從普通表中動態地獲取數據并組合,只不過外表看起來像一張表罷了。其原理通過下圖便一目了然:

mysql視圖有索引嗎

事實上有些時候視圖還會被用于限制用戶對普通表的查詢操作,對于這類用戶只賦予對應視圖的select操作權限,僅讓他們只能讀取特定的行或列的數據。這樣我們也就不用直接使用數據庫的權限設置限制行列的讀取,同時也避免了權限細化的麻煩。

推薦學習:mysql視頻教程

以上就是

? 版權聲明
THE END
喜歡就支持一下吧
點贊7 分享