mysql8优化实战

在面临10万户管理系统上线后,慢SQL问题突出。主要针对多表查询、COUNT SQL和大OFFSET优化进行总结。通过调整COUNT SQL为COUNT(长度为1的status字段),创建索引提高性能,同时注意避免使用NULL值。对于大量LIMIT查询,考虑控制返回页数或改写SQL,以提升效率。例如,将status字段从char(1)改为int,提升查询速度。
摘要由CSDN通过智能技术生成

最近上线了一个10万户的管理系统,以前的客户没有这么多用户量,隐藏在代码中的慢sql渐渐显现出来了。
下面是我最近一周慢sql优化的总结:

	多表sql优化、count sql优化、超过10 0000条limit优化

一、多表sql优化

二、count sql优化

在这里插入图片描述
该表有2135067条记录,使用pageHelper默认生成的count sql,导致相关菜单页面完全没法使用
在这里插入图片描述
在这里插入图片描述
由于count(*)太慢,考虑到使用count(任意索引列)的方式写sql,字段的数据长度越长,建立的索引长度越长、查询性能越差。就找了长度只有1的status字段,这样能达到最好的索引性能。
使用如下sql建立索引:

alter table water add index idx_status (status)

从阿里规约得知,count(列名)不会统计此列为NULL值的行,status字段必须设置成非空,否则存在NULL值会导致统计数据错误;虽然该优化不符合规约,但实实在在的提升性能,故值得一试࿰

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值