当前位置: 首页 > news >正文

如何优化 MySQL 数据库的查询性能?

一、SQL 语句层面优化

  1. 杜绝 SELECT *
    只查需要字段,减少IO与网络传输
-- 差
SELECT * FROM user;
-- 优
SELECT id,name FROM user;
  1. 合理使用索引字段做条件
    whereorder bygroup byjoin 字段优先建索引

  2. 避免索引失效

  • 不要对索引列做函数运算:where DATE(create_time)='2026'
  • 不要隐式类型转换:字符串字段传数字
  • 禁止 !=、<>、not in、is not null 全表扫描
  • 左模糊 %xx 不走索引,改用全文索引
  1. 分页优化
    深分页 limit 100000,10 极慢
-- 慢
select * from table limit 100000,10
-- 快(主键定位)
select * from table where id>100000 limit 10
  1. 大表禁用 distinct 多字段
    改用分组去重,效率更高

  2. 联表查询优化
    小表驱动大表,left join 左表小、右表大
    优先内连接 inner join 比左右连接快

二、索引优化(核心)

  1. 主键优先自增INT,避免UUID做主键
  2. 联合索引遵循最左前缀原则
    idx(a,b,c) 支持 a / a,b / a,b,c 查询
  3. 区分度低字段不建索引(性别、状态)
  4. 冗余索引及时删除
  5. 高频查询、排序、分组字段必建索引
  6. 超长字符串用前缀索引

三、表结构设计优化

  1. 字段类型越小越好
  • 手机号用 varchar 不用bigint
  • 状态用 tinyint 代替int
  1. 时间字段用 datetime / timestamp,少用字符串存时间
  2. 大字段(文本、图片)拆表,垂直分表
  3. 避免大字段常驻常用查询表
  4. 合理设置 not null,默认值代替null

四、数据库配置优化(my.ini/my.cnf)

# 缓冲池(最重要,设物理内存50%-70%)
innodb_buffer_pool_size=4G
# 单次查询最大内存
sort_buffer_size=2M
join_buffer_size=2M
# 最大连接数
max_connections=500
# 慢查询日志开启,抓慢SQL
slow_query_log=1
long_query_time=1

五、架构层面优化

  1. 读写分离:主库写,从库读
  2. 分库分表
    • 水平分表:数据量大拆分
    • 垂直分库:业务拆分
  3. 缓存拦截
    Redis 缓存热点数据,避开DB查询
  4. 定时清理脏数据、归档历史数据

六、执行计划调优(必用)

explain 分析SQL执行情况

EXPLAIN SELECT * FROM user WHERE name='test';

重点看:

  • type:优先 ref、range,拒绝 all 全表扫描
  • key:是否用到索引
  • rows:扫描行数越少越好
  • Extra:避免 Using filesort 文件排序、Using temporary临时表

七、InnoDB 专属优化

  1. 关闭不必要事务自动提交
  2. 大事务拆分,减少锁等待
  3. 批量插入用 insert values(),(),() 批量语法
  4. 定期执行 optimize table 整理碎片
http://www.rkmt.cn/news/1305981.html

相关文章:

  • 2026长沙到岳阳商务车/长沙到岳阳商务车电话/岳阳到长沙商务车/岳阳到长沙商务车电话推荐 - 速递信息
  • 2026年4月热门的鹿优选商城推荐,手机购物/线上购物/护肤品时尚好物优选/好物优选,鹿优选商城商品质量如何 - 品牌推荐师
  • 装饰用
  • docker运行hermes agent
  • 2026涪陵家具工厂推荐|沙发/床垫/定制家具实力厂家汇总 - 企业推荐师
  • 南充地区门头招牌、发光字、软膜灯箱制作 - 四川华蔓广告有限公司设计安装施工 - 四川华蔓广告有限公司
  • 2026年4月技术好的清理筛实力厂家推荐,粮食通风地笼/斗式提升机/悬空输送机/比重精选筛/清理筛,清理筛生产厂家哪个好 - 品牌推荐师
  • 宿主机与vm共享folder的开发
  • 2026年贵州AI网络推广怎么做才不踩坑?贵阳豆包搜索推广5大服务商实战对标指南 - 年度推荐企业名录
  • 物质的本质
  • Nginx 配置 API 网关鉴权失败报错 502 Bad Gateway 如何解决?
  • Java程序中如何ping一个域名是否有效
  • 面向对象程序设计-第一部分总结
  • MIT 开源 ScalarGui 图形化搞定超大 Git 仓库克隆,支持断点续传与稀疏检出
  • 万字 Claude Code 深度实践:安装、工作流与定制化配置详解
  • claude code命令使用
  • 2026年电磁加热厂家/电磁导热油炉厂家/电导热油炉厂家排行 - 速递信息
  • 2026年推荐EDI设备厂,值得信赖的EDI设备维保生产商,推荐EDI设备厂家地址 - 品牌推广大师
  • 2026优选:正规的工程剩余电缆回收哪家好 热门推荐 口碑优选 - 速递信息
  • 面向对象程序设计pta作业集1-3总结Blog - 黑马王子
  • 2026最新:赤峰除甲醛公司哪个专业,哪家更靠谱 - 得意的笑125
  • 2026必看:赤峰甲醛检测治理公司专业之选,如何选择一个真正可靠且有效的除甲醛公司呢? - 得意的笑125
  • OAuth2.0 授权码模式回调地址不匹配报错 invalid_redirect_uri 怎么处理?
  • Node.js Express 中间件鉴权漏掉部分路由导致 403 Forbidden 怎么办?
  • Tlias教学管理系统项目实战
  • 2026年电锅炉厂家/电节能导热油炉厂家/电加热设备厂家排行 - 速递信息
  • 20026年5月永城黄金回收多少钱一克实时行情回收避坑指南 - 速递信息
  • 重庆:报考中质协六西格玛黑带和绿带指定报考机构推荐 - 众智商学院课程中心
  • 利用Cursor编写工业WebScad-005创建历史查询界面
  • AI Agent 的生产力悖论