SQL查询优化实战:一个慢查询从12秒到0.03秒的全过程在实际开发中,你一定遇到过这样的场景:上线前测试一切正常,数据量一上来,页面直接转圈转到你怀疑人生。一个查询慢了几秒,用户就关掉了页面;慢了十几秒,用户就卸载了App。SQL优化不是什么高深莫测的玄学,它是每个后端开发者必须掌握的基本功。今天这篇文章,我会用一个真实案例,把SQL查询优化的完整思路、工具使用、索引策略一步一步拆解给你看。一、问题背景:一条让人崩溃的慢查询事情要从一次线上告警说起。某电商平台的订单列表接口,响应时间突然从200ms飙升到了12秒,用户投诉量在半小时内翻了三倍。拿到慢查询日志后,定位到了这条SQL:sqlSELECTo.id, o.order_no, o.amount, o.status,u.nickname, u.phoneFROM orders oLEFT JOIN users u ON o.user_id = u.idWHERE o.status IN (1, 2, 3)AND o.created_at = '2026-05-01 00:00:00'ORDER BY o.created_at DESCLIMIT 20;orders表数据量大约800万行,users表大约120万行。执行这条查询,在没有任何优化的情况下,耗时12.3秒。很多人第一反应是"加索引",但加在哪里、怎么加,这里面的门道非常多。二、第一步:用Explain看清真相优化SQL的第一件事,不是改代码,而是用Explain看执行计划。sqlEXPLAIN SELECTo.id, o.order_no, o.amount, o.status,u.nickname, u.phoneFROM orders oLEFT JOIN users u ON o.user_id = u.idWHERE o.status IN (1, 2, 3)
SQL查询优化实战:一个慢查询从12秒到0.03秒的全过程
发布时间:2026/6/13 4:49:02
SQL查询优化实战:一个慢查询从12秒到0.03秒的全过程在实际开发中,你一定遇到过这样的场景:上线前测试一切正常,数据量一上来,页面直接转圈转到你怀疑人生。一个查询慢了几秒,用户就关掉了页面;慢了十几秒,用户就卸载了App。SQL优化不是什么高深莫测的玄学,它是每个后端开发者必须掌握的基本功。今天这篇文章,我会用一个真实案例,把SQL查询优化的完整思路、工具使用、索引策略一步一步拆解给你看。一、问题背景:一条让人崩溃的慢查询事情要从一次线上告警说起。某电商平台的订单列表接口,响应时间突然从200ms飙升到了12秒,用户投诉量在半小时内翻了三倍。拿到慢查询日志后,定位到了这条SQL:sqlSELECTo.id, o.order_no, o.amount, o.status,u.nickname, u.phoneFROM orders oLEFT JOIN users u ON o.user_id = u.idWHERE o.status IN (1, 2, 3)AND o.created_at = '2026-05-01 00:00:00'ORDER BY o.created_at DESCLIMIT 20;orders表数据量大约800万行,users表大约120万行。执行这条查询,在没有任何优化的情况下,耗时12.3秒。很多人第一反应是"加索引",但加在哪里、怎么加,这里面的门道非常多。二、第一步:用Explain看清真相优化SQL的第一件事,不是改代码,而是用Explain看执行计划。sqlEXPLAIN SELECTo.id, o.order_no, o.amount, o.status,u.nickname, u.phoneFROM orders oLEFT JOIN users u ON o.user_id = u.idWHERE o.status IN (1, 2, 3)