前言本文汇总日常开发高频 MySQL 优化手段分为索引优化、SQL 语句改写、表结构设计、分页 / 分组 / 关联通用优化全部可直接落地使用。一、索引优化技巧高频查询字段建索引WHERE、ORDER BY、JOIN、GROUP BY 字段优先创建索引多字段联合查询使用复合索引遵循最左前缀等值字段放左侧范围放最后避免索引失效字段不使用函数、不做隐式类型转换、不以 % 开头模糊查询唯一业务字段手机号、账号使用 UNIQUE 索引主键使用自增 BIGINT不创建冗余索引复合索引可覆盖单字段查询删除重复单字段索引字段尽量 NOT NULLNULL 过多会降低索引区分度分页排序字段必须加入索引杜绝 Using filesort。二、SQL 语句改写优化禁用SELECT *显式指定所需字段利用覆盖索引分页超大偏移量改写为主键过滤或子查询分页避免! NOT IN可改用 OR 等值匹配模糊查询尽量使用xxx%右匹配禁止%xxx左模糊相关子查询改写为 LEFT JOIN 关联查询减少循环执行批量插入使用多 VALUES 语法减少多次 IO统计 COUNT 优先COUNT(*)不要 COUNT (字段) 忽略 NULL复杂统计定时生成统计表避免实时 GROUP BY 聚合。三、表结构设计优化状态、性别、类型使用 TINYINT节省磁盘空间手机号使用 CHAR (11)统一字符集 utf8mb4排序规则 utf8mb4_unicode_ci大文本、超长备注单独拆分扩展表主表只存短字段核心业务表添加软删除is_deleted禁止直接 DELETE 硬删时间字段使用 DATETIME不使用 VARCHAR 存储时间字段尽量设置 NOT NULL 并赋予默认值减少索引失效概率。四、关联查询 JOIN 优化关联字段建立索引控制关联表数量不超过 3 张小表驱动大表LEFT JOIN 左表放数据量少的主表右表筛选条件写入 ON防止左连接丢失主表数据禁止无 ON 条件关联避免笛卡尔积。五、事务与并发优化事务尽量缩短执行时间避免长事务占用锁高并发业务隔离级别选用 RC减少间隙锁冲突更新、修改尽量根据主键 ID 定位缩小锁范围批量更新分批执行不一次性更新上万条数据。六、通用开发规范总结上线前使用 EXPLAIN 校验所有复杂 SQL杜绝 typeALL 全表扫描线上开启慢查询日志定期巡检耗时超过 1 秒的语句热点查询搭配 Redis 缓存分担 MySQL 读压力大表定期分表、归档历史数据控制单表行数百万以内禁止线上使用DROP、TRUNCATE、大批量 DELETE 无备份操作。