当前位置: 首页 > MySQL数据库

MySQL SQL优化方法是什么

时间:2026-01-28 14:10:54

slowlog里查到一条sql执行了10秒钟以上

    # Time: 2017-03-02T18:41:50.201376+08:00

    # User@Host: oms_readonly[oms_readonly] @ [10.xx.xx.xx] Id: 54124620

    # Query_time: 11.005894 Lock_time: 0.000223 Rows_sent: 20 Rows_examined: 1838114

    SET timestamp=1488451310;

    select * from customers where `type` = 1 AND `status` < 7 AND `isarea` = 6 AND `into_time`>='2016-12-01'AND `into_time`<='2017-01-02 23:59:59' order by score desc limit 40,20;

查看执行计划

    mysql> explain select * from customers where `type` = 1 AND `status` < 7 AND `isarea` = 6 AND `into_time`>='2016-12-01'AND `into_time`<='2017-01-02 23:59:59' order by score desc limit 40,20;

    +----+-------------+-----------+------------+-------+-----------------------------------------------------------------+-------+---------+------+------+----------+-------------+

    | id | select_type | table | partitions | type | possible_keys | key | key_len | ref | rows | filtered | Extra |

    +----+-------------+-----------+------------+-------+-----------------------------------------------------------------+-------+---------+------+------+----------+-------------+

    | 1 | SIMPLE | customers | NULL | index | type,into_time,isarea,status,idx_isarea_renew_owner,type_status | score | 2 | NULL | 603 | 0.21 | Using where |

    +----+-------------+-----------+------------+-------+-----------------------------------------------------------------+-------+---------+------+------+----------+-------------+

    1 row in set, 1 warning (0.00 sec)

看下列的选择性,很明显isarea列的选择性更好

    mysql> select count(*) from customers where `type` = 1;

    +----------+

    | count(*) |

    +----------+

    | 2373175 |

    +----------+

    1 row in set (1.53 sec)

    mysql> select count(*) from customers where `status` < 7;

        -> ;

    +----------+

    | count(*) |

    +----------+

    | 2494232 |

    +----------+

    1 row in set (3.16 sec)

    mysql> select count(*) from customers where `isarea` = 6;

    +----------+

    | count(*) |

    +----------+

    | 135347 |

    +----------+

    1 row in set (0.15 sec)

    mysql> select count(*) from customers where `into_time`>='2016-12-01'AND `into_time`<='2017-01-02 23:59:59';

    +----------+

    | count(*) |

    +----------+

    | 106158 |

    +----------+

    1 row in set (0.12 sec)

isarea有索引,强制用这个列的索引

    mysql> explain select * from customers use index(isarea) where `type` = 1 AND `status` < 7 AND `isarea` = 6 AND `into_time`>='2016-12-01'AND `into_time`<='2017-01-02 23:59:59' order by score desc limit 40,20;

    +----+-------------+-----------+------------+------+---------------+--------+---------+-------+--------+----------+----------------------------------------------------+

    | id | select_type | table | partitions | type | possible_keys | key | key_len | ref | rows | filtered | Extra |

    +----+-------------+-----------+------------+------+---------------+--------+---------+-------+--------+----------+----------------------------------------------------+

    | 1 | SIMPLE | customers | NULL | ref | isarea | isarea | 5 | const | 249438 | 1.85 | Using index condition; Using where; Using filesort |

    +----+-------------+-----------+------------+------+---------------+--------+---------+-------+--------+----------+----------------------------------------------------+

    1 row in set, 1 warning (0.00 sec)

优化前10几秒出结果,优化后0.5秒出结果。


上一篇:怎么使用mysql性能指标tps/qps
下一篇:怎么解决MYSQL的ERROR 2003问题
mysql sql
  • 英特尔与 Vertiv 合作开发液冷 AI 处理器
  • 英特尔第五代 Xeon CPU 来了:详细信息和行业反应
  • 由于云计算放缓引发扩张担忧,甲骨文股价暴跌
  • Web开发状况报告详细介绍可组合架构的优点
  • 如何使用 PowerShell 的 Get-Date Cmdlet 创建时间戳
  • 美光在数据中心需求增长后给出了强有力的预测
  • 2027服务器市场价值将接近1960亿美元
  • 生成式人工智能的下一步是什么?
  • 分享在外部存储上安装Ubuntu的5种方法技巧
  • 全球数据中心发展的关键考虑因素
  • 英特尔与 Vertiv 合作开发液冷 AI 处理器

    英特尔第五代 Xeon CPU 来了:详细信息和行业反应

    由于云计算放缓引发扩张担忧,甲骨文股价暴跌

    Web开发状况报告详细介绍可组合架构的优点

    如何使用 PowerShell 的 Get-Date Cmdlet 创建时间戳

    美光在数据中心需求增长后给出了强有力的预测

    2027服务器市场价值将接近1960亿美元

    生成式人工智能的下一步是什么?

    分享在外部存储上安装Ubuntu的5种方法技巧

    全球数据中心发展的关键考虑因素