alter table ba_bgt_info add v_is_auto varchar(300) generated always AS(manage_categories->"$.isAuto")
在MySQL 5.7中,支持兩種Generated Column,即Virtual Generated Column和Stored Generated Column,前者只將Generated Column保存在數據字典中(表的元數據),並不會將這壹列數據持久化到磁盤上;後者會將Generated Column持久化到磁盤上,而不是每次讀取的時候計算所得。很明顯,後者存放了可以通過已有數據計算而得的數據,需要更多的磁盤空間,與Virtual Column相比並沒有優勢,因此,MySQL 5.7中,不指定Generated Column的類型,默認是Virtual Column。
如果需要Stored Generated Golumn的話,可以在Virtual Generated Column上建立索引更加合適
綜上,壹般情況下,都使用Virtual Generated Column,這也是MySQL默認的方式
能正常加索引、特殊用途冗余列、列長度還是和定義類型壹樣、查詢效率上,物理>STORED>VIRTUAL
虛擬列: 壹個或多個字段的數據函數處理後的結果集映射成的字段
視圖: 壹個或多個表依照某個條件組合而成的結果集(相當於壹個查詢sql語句的結果集映射成的虛擬表)
其本質其實都是以空間換時間
什麽是視圖?視圖是幹什麽用的?
視圖(view)是壹種虛擬存在的表,是壹個邏輯表,本身並不包含數據。作為壹個select語句保存在數據字典中的。
通過視圖,可以展現基表的部分數據;視圖數據來自定義視圖的查詢中使用的表,使用視圖動態生成。
基表: 用來創建視圖的表叫做基表base table
因為視圖的諸多優點,如下
總而言之,使用視圖的大部分情況是為了保障數據安全性,提高查詢效率。