问题描述:
某条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秒左右

mysql查询sending data占用大量时间的问题处理的更多相关文章

  1. MySQL Sending data导致查询很慢的问题详细分析【转载】

    转自http://blog.csdn.net/yunhua_lee/article/details/8573621 [问题现象] 使用sphinx支持倒排索引,但sphinx从mysql查询源数据的时 ...

  2. 实战:MySQL Sending data导致查询很慢的问题详细分析(转)

    这两天帮忙定位一个MySQL查询很慢的问题,定位过程综合各种方法.理论.工具,很有代表性,分享给大家作为新年礼物:) [问题现象] 使用sphinx支持倒排索引,但sphinx从mysql查询源数据的 ...

  3. 实战:MySQL Sending data导致查询很慢的问题详细分析(转)

    出处:http://blog.csdn.net/yunhua_lee/article/details/8573621 这两天帮忙定位一个MySQL查询很慢的问题,定位过程综合各种方法.理论.工具,很有 ...

  4. MySQL Sending data导致查询很慢的问题详细分析

    这两天帮忙定位一个MySQL查询很慢的问题,定位过程综合各种方法.理论.工具,很有代表性,分享给大家作为新年礼物:) [问题现象] 使用sphinx支持倒排索引,但sphinx从mysql查询源数据的 ...

  5. 0223实战:MySQL Sending data导致查询很慢的问题详细分析

    转自博客http://blog.csdn.net/yunhua_lee/article/details/8573621 [问题现象] 使用sphinx支持倒排索引,但sphinx从mysql查询源数据 ...

  6. mysql 查询开销 sending data

    1.执行一个查询,发现时间开销都在sending data,为什么?2.sending data容易误导,让人以为只是发送数据给客户端,实际上sending data包含两个过程:读取数据并处理,发送 ...

  7. mysql查询语句出现sending data耗时解决

    在执行一个简单的sql查询,表中数据量为14万 sql语句为:SELECT id,titile,published_at from spider_36kr_record where is_analyz ...

  8. 1125MySQL Sending data导致查询很慢的问题详细分析

    -- 问题1 tablename使用主键索引反而比idx_ref_id慢的原因EXPLAIN SELECT SQL_NO_CACHE COUNT(id) FROM dbname.tbname FORC ...

  9. mysql索引无效且sending data耗时巨大原因分析

    一朋友最近新上线一个项目,本地测试环境跑得好好的,部署到线上却慢得像蜗牛一样.后来查询了一下发现一个sql执行了16秒,有些长的甚至80秒.本地运行都是毫秒级别的查询.下面记录一下困扰了两天的,其中一 ...

随机推荐

  1. 使用二分查找判断某个数在某个区间中--如何判断某个IP地址所属的地区

    一,问题描述 给定100万个区间对,假设这些区间对是互不重叠的,如何判断某个数属于哪个区间? 首先需要对区间的特性进行分析:区间是不是有序的?有序是指:后一个区间的起始位置要大于前一个区间的终点位置. ...

  2. [Java] [查找文件] [递归]]

    // 工具方法 private static FilenameFilter getFilter(final String mode) { return new FilenameFilter() { P ...

  3. 群发技术-使用python3给微信好友群发消息

    本文介绍如何给个人微信好友群发消息. 微信个人号中的群发助手可以一次给30个发送消息,如果要给所有所有群发,则需要自己手动发送多次,或者借助程序实现了.本文即是程序实现教程 一.原理 在微信的官方网站 ...

  4. solr集群SolrCloud(solr+zookeeper)windows搭建

    SolrCloud是什么 参考 solrCloud官网介绍 http://lucene.apache.org/solr/guide/6_6/solrcloud.html Apache Solr 可以设 ...

  5. window中安装mongodb

    转自:https://blog.csdn.net/heshushun/article/details/77776706 一.先登录Mongodb官网https://www.mongodb.com/do ...

  6. 拦截对该服务器所有的http请求

    一:拦截对该服务器所有的http请求. 在config 中加, <system.webServer> <modules> <add name="HttpAuth ...

  7. Docker 获取镜像 - 一

    docker  images docker 镜像获取方式: 1.pull 可以直接从网上拉取: 2.import  可以从现有容器打包成一个镜像: 3.commit 可以从现有容器一个镜像: 4.bu ...

  8. html去掉滑动条

    实例: .week { /*text-align: left;*/ /*display: inline-table;*/ margin: 0 auto; padding: 0; list-style: ...

  9. PHP入门知识

    一.搭建开发环境 想要使用一门后端语言,当然是要先搭建开发环境,模拟出服务器环境,不然怎么体现出后端,所以就先大众使用使用的Apache.Mysql,如果不想那么多折腾,建议直接使用xampp或者wa ...

  10. 添加,删除List<Map<String, Object>>元素

    这里讲对List<Map<String, Object>>的数据结构的添加和删除实例 添加 //初始化 List<Map<String, Object>> ...