存储/虚拟生成的列 - 优点/缺点/最佳实践?

use*_*843 0 mysql generated-columns

我已经阅读了有关它们的 MySQL 文档,但仍然不清楚存储/虚拟生成列的好处?将相同的数据存储在实际列中并将其索引到内存中有何优点/缺点?有哪些优点/缺点,以及使用它们更有效或更好的最佳时间/示例?谢谢你!

Bil*_*win 5

使用存储的生成列的一个很好的理由是当表达式的成本足够高以至于您只想在插入/更新行时才计算它。每次运行读取该列的查询时,虚拟生成列都必须重新计算表达式。

手册证实了这一点:

存储的生成列可以用作物化缓存,用于处理动态计算成本高昂的复杂条件。

除此之外,生成列的某些用途需要存储该列。它们不适用于虚拟生成的列。例如,如果要在生成列上创建外键或全文索引,则需要使用存储的生成列。