文章详情

短信预约信息系统项目管理师 报名、考试、查分时间动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

Mysql慢Sql排查

2019-07-16 01:38

关注

Mysql慢Sql排查

company_id和odds_typeid的值并不够散列(company_id表少于1k条就表示不够散列),不必要创建索引。

出现慢sql警告,排查语句是否有问题。


mysql> SELECT * FROM `basketball_ls_match_odds` WHERE `match_id` = 3554260 AND `company_id` = 15 order by id desc limit 1G
*************************** 1. row ***************************
             id: 27071647
       match_id: 3554260
     company_id: 15
    odds_typeid: 1
rightteam_score: 0.8600
 handicap_score: -20.5000
 leftteam_score: 0.9000
  handicap_time: 1595497414
    create_time: 2020-07-23 17:43:37
    update_time: 1970-12-31 08:00:00
1 row in set (0.50 sec)

sql速度太慢。开始分析。


    mysql> explain SELECT * FROM `basketball_ls_match_odds` WHERE `match_id` = 3554260 AND 
  `company_id` = 15 order by id desc limit 1G
  *************************** 1. row ***************************
           id: 1
  select_type: SIMPLE
        table: basketball_ls_match_odds
   partitions: NULL
         type: index_merge
  possible_keys: idx_match_id,idx_company_id
          key: idx_match_id,idx_company_id
      key_len: 4,4
          ref: NULL
         rows: 910
     filtered: 100.00
        Extra: Using intersect(idx_match_id,idx_company_id); Using where; Using filesort
  1 row in set, 1 warning (0.00 sec)

使用到了聚合索引。
猜想此处索引应该有问题。

使用强制索引


mysql> SELECT * FROM `basketball_ls_match_odds` force index(idx_match_id) WHERE `match_id` = 3554260 AND `company_id` = 15 order by id desc limit 1G
*************************** 1. row ***************************
             id: 27071647
       match_id: 3554260
     company_id: 15
    odds_typeid: 1
rightteam_score: 0.8600
 handicap_score: -20.5000
 leftteam_score: 0.9000
  handicap_time: 1595497414
    create_time: 2020-07-23 17:43:37
    update_time: 1970-12-31 08:00:00
1 row in set (0.01 sec)

使用索引时,查询速度正常
查看表结构


mysql> desc basketball_ls_match_odds;
+-----------------+------------------+------+-----+---------------------+----------------+
| Field           | Type             | Null | Key | Default             | Extra          |
+-----------------+------------------+------+-----+---------------------+----------------+
| id              | int(11) unsigned | NO   | PRI | NULL                | auto_increment |
| match_id        | int(11) unsigned | NO   | MUL | 0                   |                |
| company_id      | int(11)          | NO   | MUL | 0                   |                |
| odds_typeid     | tinyint(2)       | NO   | MUL | 0                   |                |
| rightteam_score | decimal(8,4)     | NO   |     | 0.0000              |                |
| handicap_score  | decimal(8,4)     | NO   |     | 0.0000              |                |
| leftteam_score  | decimal(8,4)     | NO   |     | 0.0000              |                |
| handicap_time   | int(11)          | NO   |     | 0                   |                |
| create_time     | timestamp        | NO   |     | 1970-12-31 08:00:00 |                |
| update_time     | timestamp        | NO   |     | 1970-12-31 08:00:00 |                |
+-----------------+------------------+------+-----+---------------------+----------------+
10 rows in set (0.00 sec)

得出结论,索引创建的有问题。company_id和odds_typeid的值并不够散列(company_id表少于1k条就表示不够散列),不必要创建索引。
删除索引


mysql> ALTER TABLE `basketball_ls_match_odds` DROP INDEX `idx_odds_typeid`, DROP INDEX `idx_company_id`;
Query OK, 0 rows affected (0.13 sec)
Records: 0  Duplicates: 0  Warnings: 0

再次查询


mysql> SELECT * FROM `basketball_ls_match_odds` WHERE `match_id` = 3554260 AND `company_id` = 15 order by id desc limit 1G
*************************** 1. row ***************************
             id: 27071647
       match_id: 3554260
     company_id: 15
    odds_typeid: 1
rightteam_score: 0.8600
 handicap_score: -20.5000
 leftteam_score: 0.9000
  handicap_time: 1595497414
    create_time: 2020-07-23 17:43:37
    update_time: 1970-12-31 08:00:00
1 row in set (0.00 sec)

优化成功

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-数据库
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯