【发布时间】:2021-06-28 21:52:02
【问题描述】:
我已阅读有关它们的 MySQL 文档,但仍不清楚存储/虚拟生成列的好处?在实际列中存储相同数据并将其索引到内存中的优点/缺点是什么?有哪些优点/缺点,以及使用它们的最佳时间/示例更有效或更好? 谢谢!
【问题讨论】:
我已阅读有关它们的 MySQL 文档,但仍不清楚存储/虚拟生成列的好处?在实际列中存储相同数据并将其索引到内存中的优点/缺点是什么?有哪些优点/缺点,以及使用它们的最佳时间/示例更有效或更好? 谢谢!
【问题讨论】:
使用存储生成列的一个很好的理由是当表达式的开销足够大以至于您只想在插入/更新行时计算它。每次运行读取该列的查询时,虚拟生成的列都必须重新计算表达式。
manual 证实了这一点:
存储的生成列可用作物化缓存,用于在运行中计算成本很高的复杂条件。
除此之外,生成列的某些用途需要存储列。它们不适用于虚拟生成的列。例如,如果要在生成的列上创建外键或全文索引,则需要使用存储的生成列。
【讨论】: