Stored/Virtual 生成的列- Pros/Cons/Best 做法?

Stored/Virtual Generated Column- Pros/Cons/Best Practices?

我已经阅读了关于它们的 MySQL 文档,但仍然不清楚 Stored/Virtual 生成列的好处? pros/cons 将相同数据存储在实际列中并将其索引到内存中是什么? pros/cons 和最好的 times/examples 是什么,使用它们时效率更高或更好? 谢谢!

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

manual 证实了这一点:

Stored generated columns can be used as a materialized cache for complicated conditions that are costly to calculate on the fly.

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