
SQL 优化是后端开发面试中最高频的问题之一。这篇从实战出发讲清楚怎么定位慢 SQL、怎么优化、怎么看执行计划。一、定位慢 SQL-- 开启慢查询日志SETGLOBALslow_query_logON;SETGLOBALlong_query_time1;-- 超过1秒SETGLOBALlog_queries_not_using_indexesON;-- 查看慢日志mysqldumpslow-s t-t10/var/lib/mysql/slow.log二、Explain 执行计划EXPLAINSELECT*FROMseckill_orderWHEREstatus0;列名说明好/坏typeALL全表const主键ALL ❌ const ✅key使用的索引NULL ❌rows扫描行数越小越好ExtraUsing filesort没走排序索引❌三、索引优化-- 单列索引ALTERTABLEseckill_orderADDINDEXidx_status(status);ALTERTABLEseckill_orderADDINDEXidx_user_id(user_id);-- 联合索引ALTERTABLEseckill_orderADDINDEXidx_user_status(user_id,status);-- 覆盖索引查询SELECTuser_id,statusFROMseckill_orderWHEREuser_id1001;-- 上面的查询只从索引取数据不需要回表 觉得有用的话点赞 关注【张老师技术栈】吧