MySQL 查询优化案例分享

在日常开发中,SQL 查询性能直接影响到系统的响应速度和用户体验。随着数据量的增长,慢查询可能成为系统的瓶颈。本文将通过实际案例,分享几种常见的 MySQL 查询优化方法,帮助开发者快速定位和优化慢查询,提升数据库性能。


一、慢查询定位与分析

1. 开启慢查询日志

通过开启慢查询日志,可以记录执行时间超过指定阈值的 SQL 查询,帮助分析系统中的瓶颈。

SET GLOBAL slow_query_log = 1;  
SET GLOBAL long_query_time = 1;  -- 超过 1 秒的查询会记录  
SHOW VARIABLES LIKE 'slow_query_log_file';  -- 查看慢查询日志位置  

示例输出(日志格式):

# Time: 2023-12-01T10:05:34  
# Query_time: 2.456 Lock_time: 0.002 Rows_sent: 1000 Rows_examined: 500000  
SELECT * FROM orders WHERE order_date > '2023-01-01';  

二、案例 1:大表全表扫描优化

问题描述

查询订单表 orders 中近一年的订单数据,查询速度缓慢。

SELECT * FROM orders WHERE order_date > '2023-01-01';  

分析:

  • 订单表数据量庞大,每次查询都进行全表扫描(EXPLAIN 显示 type=ALL)。
  • order_date 列没有建立索引。

优化方案:

  1. order_date 字段添加索引:
ALTER TABLE orders ADD INDEX idx_order_date (order_date);  
  1. 使用覆盖索引查询,避免回表:
SELECT order_id, order_date 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值