zoukankan      html  css  js  c++  java
  • mysql查询sending data占用大量时间的问题处理

    问题描述:
    某条sql语句在测试环境执行只需要1秒不到,到了生产环境执行需要8秒以上

    在phpmyadmin里面执行性能分析,发现sending data占用了差不多90%以上的时间

    查询一下“Sending data”状态的含义,原来这个状态的名称很具有误导性,所谓的“Sending data”并不是单纯的发送数据,而是包括“收集 + 发送 数据”。
    这里的关键是为什么要收集数据,原因在于:mysql使用“索引”完成查询结束后,mysql得到了一堆的行id,如果有的列并不在索引中,mysql需要重新到“数据行”上将需要返回的数据读取出来返回个客户端。

    猜测可能是索引没有添加正确,于是采用
    explain分析方法,在查询语句前添加expain,如下可以在phpadmin里面执行,也可以在navicat中执行:

    explain SELECT
    a.media_id,
    a.user_id,
    a.media_type,
    a.title,
    a.media_url,
    a.description,
    a.cover_url,
    a.like_count,
    a.play_count,
    a.reply_count,
    a.relay_count,
    a.share_count,
    a.length,
    a.width,
    a.length_time,
    a.STATUS,
    a.verification,
    a.encapsulate_status,
    a.create_time,
    a.update_time,
    a.audit_time,
    CASE WHEN c.id IS NOT NULL THEN 1 ELSE 0 END niuren,
    c.coefficient,
    CASE WHEN d.id IS NOT NULL THEN 1 ELSE 0 END remen,
    d.coefficient coefficientReMen,
    b.nickname,
    p.official,
    p.theme_id,
    p.theme_name,
    u.size
    FROM
    tbl_media_info a
    LEFT JOIN tbl_user_info b ON a.user_id=b.user_id
    LEFT JOIN tbl_ranking_config c ON c.media_id=a.media_id AND c.type=3
    LEFT JOIN tbl_ranking_config d ON d.media_id=a.media_id AND d.type=2
    LEFT JOIN tbl_media_theme_config t ON a.media_id = t.media_id
    LEFT JOIN tbl_theme_info p ON t.theme_id = p.theme_id
    LEFT JOIN tbl_upload_status u ON u.url = a.media_url

    GROUP BY a.media_id

    order by a.create_time desc limit 0,20

    通过explain查询分析,可以看到结果中possible_keys为空,说明没有用到索引
    LEFT JOIN tbl_media_info t5 ON t1.user_id = t5.user_id,而这个关联查询用到了user_id,需要在这个字段上添加索引

    添加索引,问题解决,查询只需要0.5秒左右

  • 相关阅读:
    Android五天乐(第三天)ListFragment与ViewPager
    Thinking in States
    红黑树上的连接操作
    [LeetCode][Java] Binary Tree Level Order Traversal
    使用IR2101半桥驱动电机的案例
    HDU 4782 Beautiful Soup(模拟)
    C语言之基本算法38—格式化输出10000以内的全部完数
    远在美国的凤姐为何选择回国理財?
    2014-7-20 谁还认得这几本书?
    360在线笔试---反思两道题
  • 原文地址:https://www.cnblogs.com/reblue520/p/7426694.html
Copyright © 2011-2022 走看看