作家
登录

一个不可思议的MySQL慢查分析与解决

作者: 来源: 2017-11-08 17:03:11 阅读 我要评论


一个弗成思议的MySQL慢查分析与解决

一、媒介

开辟须要按期的删除表里一准时光以前的数据,SQL 如下

那么还有什么办法却竽暌古化这个本来竽暌功该很快的萌芽呢?

  1. mysql > delete from testtable WHERE biz_date <= '2017-08-21 00:00:00' AND status = 2 limit 500\G 

mysql > delete from testtable WHERE biz_date <= '2017-08-21 00:00:00' AND status = 2 limit 500\G前段时光在优化的时刻,已经在响应的萌芽前提上加上了索引

  1. KEY `idx_bizdate_st` (`biz_date`,`status`) 

然则实际履行的 SQL 依然异常慢,为什么呢,我们来一步步分析验证下

那我们试下直倔强迫让他走索引呢?

二、分析

表上的字段既然都有索引,那么按照之前的文┞仿分析,是两个字段都可以走上索引的。如不雅有疑问,请参考文┞仿 10 分钟让你明白 MySQL 是若何应用索引的

既然可以或许应用索引,表的总大年夜小也就是 200M 阁下,那么为什么形成了慢查呢?

我们查看履行筹划,去掉落 limit 后,发明他选择了走全表扫描。

  1. mysql > desc select *  from  testtable   WHERE biz_date <=  '2017-08-21 00:00:00' 
  2. +----+-------------+-----------+------+----------------+------+---------+------+--------+-------------+ 
  3. | id | select_type | table     | type | possible_keys  | key  | key_len |  ref   | rows   |  Extra    | 
  4. +----+-------------+-----------+------+----------------+------+---------+------+--------+-------------+ 
  5. | SIMPLE      | testtable | ALL  | idx_bizdate_st | NULL | NULL    | NULL | 980626 |  Using where  | 
  6. +----+-------------+-----------+------+----------------+------+---------+------+--------+-------------+ 
  7.  row  in set 0.00  sec) 
  8. -- 只萌芽biz_date 
  9. -- 关键点:rows: 980626 ;type:ALL  
  10. mysql > desc   select  *  from  testtable   WHERE biz_date <=  '2017-08-21 00:00:00' and
     1/5    1 2 3 4 5 下一页 尾页

      推荐阅读

      “互联网+”经济模式对民商事审判的影响与应对

    党的十九大年夜申报提出,在深化供给侧构造性改革中,推动互联网、大年夜数据、人工智能和实体经济深度融合。是以,为赓续加强经济立异力和竞争力,我国经济体系体例中“互联网+”经济模式将>>>详细阅读


    本文标题:一个不可思议的MySQL慢查分析与解决

    地址:http://www.17bianji.com/lsqh/38638.html

关键词: 探索发现

乐购科技部分新闻及文章转载自互联网,供读者交流和学习,若有涉及作者版权等问题请及时与我们联系,以便更正、删除或按规定办理。感谢所有提供资讯的网站,欢迎各类媒体与乐购科技进行文章共享合作。

网友点评
自媒体专栏

评论

热度

精彩导读
栏目ID=71的表不存在(操作类型=0)