MySQL SQL优化快速入门
1. SQL优化的目的减少磁盘IO少读数据、减少CPU计算少做排序/临时表、缩短查询时间。性能判断如何判断通过explain 需要优化的语句explain select * from tb_user where profession 软件工程 ;通过type字段判断性能type 性能由好到差的连接类型为NULL systemconsteq_refrefrangeindexall总结唯一索引 type 一般为 const 普通索引 type为 ref2.慢查询优化基础步骤找慢查询开启MySQL慢查询日志slow_query_logON定位执行时间长的SQL分析执行计划用EXPLAIN看SQL执行逻辑重点看type/key/ExtratypeALL全表扫描最差→ ref普通索引→ eq_ref主键索引最优ExtraUsing index覆盖索引最优、Using filesort文件缓冲区排序要优化优化加索引/改写SQL/调整索引。3.通用SQL优化基础技巧禁用SELECT *只查需要的字段触发覆盖索引减少回表优化分页查询避免大偏移量LIMIT 100000, 10改用主键范围WHERE id100000 LIMIT 10批量操作插入用INSERT INTO ... VALUES (),(),()MyBatis批量插入避免循环单条避免子查询子查询改JOIN减少临时表大表查询拆分查询如按时间分段查避免一次性查全量。建立联合索引减少回表4.常见慢查询场景优化基础慢查询场景优化方案SELECT * FROM user WHERE age20给age建普通索引改SELECT id,age触发覆盖索引LIMIT 100000, 10用主键范围WHERE id100000 LIMIT 10UPDATE user SET age20 WHERE name张三给name建索引避免锁全表