数据库表结构设计的一些总结

前言

最近在工作中遇到了一些关于表结构设计的问题,我所在的公司,在表设计的时候有三个字段必须要有,create_time、update_time、version。这些字段也是大多数公司都会要求的,create_time记录创建时间,update_time记录修改时间,version乐观锁版本控制字段。最近遇到的一个问题就在坑爹的update_time上面。

问题描述

update_time这个字段在用户每次修改记录后就要跟新成当前时间,所以在实现更新操作的时候都需要默认的给update_time赋值成now(),有的同事为了偷懒在创建表的时候都加了这样一条语句

 `update_time` datetime DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,

加上这个触发器,记录在被更新的时候update_time会被重新赋值成当前时间,用户每次更新记录的时候update_time被自动更新,都不用写设置update_time的代码了,貌似问题得到解决了。但是,就在前段时间我们有个全表刷数据的需求,就写了一条SQL语句去执行,需求满足了,但是update_time也被全部刷成一样了,刚好系统上面有个功能是查询一段更新时间内的记录,由于更新时间全部被刷成一样了,这个查询一次查出了几百万条数据导致接口超时。其实,接口超时是一个问题,update_time这个字段的数据被刷成一样了,业务含义没有了才是最大的问题。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值