什么是虚拟列?
在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默认的方式
应用
这里配合5.7开始支持的json,来体验一下虚拟列的使用
1. 创建表
CREATE TABLEuse_info (
uidINT(11) NOT NULLAUTO_INCREMENT,
unameVARCHAR(20) NOT NULL DEFAULT '',
other_info json,PRIMARY KEY(uid)
) ENGINE=INNODB DEFAULT CHARSET=utf8mb4;
2. 写入数据
## 两种写入json数据方式
INSERT INTO user_info (uname,other_inf