在MySQL 5.7中,支持兩種生成列,即虛擬生成列和存儲生成列。前者只將生成的列保存在數據字典(表的元數據)中,不將這壹列數據持久化到磁盤上。後者將把生成的列持久化到磁盤上,而不是每次讀取時都進行計算。顯然,後者存儲的是現有數據可以計算的數據,需要更多的磁盤空間,與虛擬列相比沒有優勢。因此,在MySQL 5.7中,沒有指定生成列的類型,默認為虛擬列。
如果需要存儲生成列,在虛擬生成列上建立索引更合適。
綜上所述,壹般情況下使用虛擬生成列,這也是MySQL默認的方式。
可以正常索引,專用冗余列,列長或與定義的類型相同,查詢效率,物理>;存儲的& gt虛擬的
虛擬列:數據函數處理後壹個或多個字段的結果集映射到的字段。
視圖:由壹個或多個表按照壹定條件組成的結果集(相當於查詢sql語句的結果集映射的虛擬表)。
其本質其實就是以空間換取時間。
什麽是視圖?這是什麽景色?
視圖是壹個虛擬表,壹個邏輯表,不包含任何數據。作為select語句存儲在數據字典中。
通過視圖,可以展示基表的壹些數據;視圖數據來自定義視圖的查詢中使用的表,並通過使用視圖動態生成。
基表:用於創建視圖的表稱為基表。
因為視圖有很多優點,如下
總之,大部分使用視圖的情況都是為了保證數據安全,提高查詢效率。