MySQL存储生成的列与MySQL虚拟生成的列有何不同?


以下是MySQL存储生成的列和MySQL虚拟生成的列之间的一些基本区别:

磁盘空间方面

如果从磁盘空间的角度来看,虚拟生成的列不会占用任何磁盘空间。另一方面,存储生成的列会占用磁盘空间。

操作方面

如果从操作的角度来看,虚拟生成的列是就地操作,这意味着无需再次复制所有数据即可更改表定义。另一方面,存储生成的列是复制操作,其成本与向表中添加新列相同。

计算方面

在虚拟生成的列中,值是在读取操作期间和BEFORE触发器中动态计算的。另一方面,在存储生成的列中,值在每个INSERT和UPDATE语句中都会更新。

何时使用

对于数据频繁更改的情况,我们应该考虑使用虚拟列。虚拟列的成本来自不断读取表,服务器每次都必须计算该列的值。另一方面,如果数据创建后不会或很少发生更改,我们应该考虑使用存储列。

更新于:2020年6月22日

630 次浏览

启动您的职业生涯

完成课程获得认证

开始学习
广告
© . All rights reserved.