起始阅读点:https ://www.percona.com/blog/2015/04/29/generated-virtual-columns-in-mysql-5-7-labs/
使用最新的 percona 5.7 运行一些测试,它们似乎运行良好。Explain plans 和 wall time 看起来不错,但我没有看到显示表状态 index_length 或 data_length 有任何差异。
您如何找到使用这些的真正足迹或开销?
与视图不同,它们似乎确实比带书签的选择更快。
起始阅读点:https ://www.percona.com/blog/2015/04/29/generated-virtual-columns-in-mysql-5-7-labs/
使用最新的 percona 5.7 运行一些测试,它们似乎运行良好。Explain plans 和 wall time 看起来不错,但我没有看到显示表状态 index_length 或 data_length 有任何差异。
您如何找到使用这些的真正足迹或开销?
与视图不同,它们似乎确实比带书签的选择更快。
视图和虚拟列是相似的,因为它们都不是物化的。即既不存储任何数据或索引,因此为什么你的
index_length
+data_length
保持不变。它们的不同之处在于:
作为旁注,这里有一些重叠的另一个常用功能是触发器。拥有一个虚拟列通常比在插入/更新时触发更新遗留列更好。
针对这个具体问题:
没有足迹,您可能看不到头顶。当然,有一些假设情况:如果您有许多虚拟列并且
SELECT *
来自客户端,那么更多数据将通过网络发送(因为行是完整发送的;客户端不知道他们可以从虚拟列定义中重建某些数据)。