在生产环境中让 MySQL 插入一个新列,并且这个列是由另外两个字段相减的值,具体的做法是?

在生产环境中让mysql插入一个新列,并且这个列是由另外两个字段相减的值,具体的做法是?
我原来的做法是直接在查询的时候计算,但是数据即将到达百万级,这种查询实在太慢了,如下:

$query->whereRaw('clumn1 - clumn2  >=  500')

我想添加一个新列,添加的时候就计算好,这样性能可能有质的提升
我找到一个原生的写法:

create table t(id int auto_increment not null,c1 int,c2 int,c3 int as (c1+c2),primary key(id));
Query OK, 0 rows affected (0.41 sec)

但是不知道laravel在数据库迁移那里应该怎么写,请指点

以上添加字段是我的想法,有没有大神有在百万级数据下有更好的解决方案,不胜感谢.

《L05 电商实战》
从零开发一个电商项目,功能包括电商后台、商品 & SKU 管理、购物车、订单管理、支付宝支付、微信支付、订单退款流程、优惠券等
《G01 Go 实战入门》
从零开始带你一步步开发一个 Go 博客项目,让你在最短的时间内学会使用 Go 进行编码。项目结构很大程度上参考了 Laravel。
讨论数量: 4

期待回答,我能想到的就是 用sql替代migration去创建表,然后通过model与数据做交互

4年前 评论

@pigzzz 没有使用函数索引,没用过这个,只用了普通索引

4年前 评论

@szwss 是不是可以建表的时候留一个空字段,然后模型定义修改器?

4年前 评论

我想这个对你有帮助:https://www.cnblogs.com/lynn919/p/10875081...

但好像只有mysql8才支持

4年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!