Mysql优化——SQL设计层面优化

设计中间表,一般针对于统计分析功能,或者实时性不高的需求(OLTP、OLAP)

有些统计功能关联很多表,计算量特别打的时候,对实时性要求不高的话,可以设计一张单标,使用定时任务,在并发量小的时候将它们计算起来,插入或更新到一张表中,这时候就是简单地单表查询了,用户体验感会好很多

为减少关联查询,创建合理的冗余字段

有些字段不经常改变,可以创建到从表的字段中,比如订单,关联的user_id,可以把用户的名字字段创建过去,查询的时候就少关联一张表了。考虑数据库的三范式和查询性能的取舍,创建冗余字段还需要注意数据一致性问题

合适的情况下使用缓存

有些字段不经常变化,可以放到缓存里边,这样查询会比较快,还可以解决一致性问题

对于字段太多,考虑拆表(比如一个表有100多个字段)

字段太多的表,有时候页面上没必要读出那么多的数据,就可以将这些字段拆出来单独提到一张表中,尤其是二进制字段clob、blob,大文本字段 text,有这些字段扫表很慢(即使select不加该列,也是结果集没有返回该列的数据,索引树上有那个数据),可以将这些列拆出来,和主键相关联,使用的时候用异步加载,要是一块儿的话还是影响性能的。还是得根据业务,拆成常用的和不常用的。不过这样子再怎么拆,主表和从表都是那么多条记录,拆了后表空间还增大了,所以还可以水平拆分(后面文章记录)

主键

主键类型最好是int类型,建议自增主键,(分布式系统的情况下可以考虑雪花算法)

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值