MySQL 存储的GENERATED COLUMNS和MySQL虚拟的GENERATED COLUMNS有什么不同呢
以下是MySQL存储的GENERATED COLUMNS和MySQL虚拟的GENERATED COLUMNS之间的一些基本差异−
阅读更多:MySQL 教程
磁盘空间方面
如果从磁盘空间方面来看差异,那么虚拟生成的列不会占用任何磁盘空间,而存储生成的列却会占用磁盘空间。
操作方面
如果从操作方面来看差异,那么虚拟生成的列是INPLACE操作,这意味着表定义可以在不必重新拷贝所有数据的情况下进行更改。然而,存储生成的列则是复制操作,其成本与向表中添加新列的成本相同。
计算方面
在虚拟生成的列中,值是在读取操作和BEFORE触发器期间即时计算的。然而,在存储生成的列中,值在每个INSERT和UPDATE语句中更新。
何时使用
我们应该考虑使用虚拟列来存储数据,其中变化发生的次数相对较多。虚拟列的成本来自不断读取表数据,并且每次服务器都必须计算该列值。另一方面,我们应该考虑在创建后不成方变或者变化不显著的数据上使用存储列。