在生产环境中让 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 在数据库迁移那里应该怎么写,请指点

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

《L02 从零构建论坛系统》
以构建论坛项目 LaraBBS 为线索,展开对 Laravel 框架的全面学习。应用程序架构思路贴近 Laravel 框架的设计哲学。
《L01 基础入门》
我们将带你从零开发一个项目并部署到线上,本课程教授 Web 开发中专业、实用的技能,如 Git 工作流、Laravel Mix 前端工作流等。
讨论数量: 4

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

5年前 评论

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

5年前 评论

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

5年前 评论

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

但好像只有 mysql8 才支持

5年前 评论