mysql count sending data_mysql查询sending data占用大量时间的问题处理

问题描述:

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

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

13bf8abfd814e2d4b1659c32317d157c.png

查询一下“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

a54b49428783bb9a9c2a773ba2496b04.png

ed4ef54131f7c1350f53bed2bddbbe29.png

通过explain查询分析,可以看到结果中possible_keys为空,说明没有用到索引

LEFT JOIN tbl_media_info t5 ON t1.user_id = t5.user_id,而这个关联查询用到了user_id,需要在这个字段上添加索引

19dca93eb6174b5b7a625444847d6b49.png

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

88cb611dbf956bd89cb72f180369d20f.png

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

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

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

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

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

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

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

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

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

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

mysql 查询开销 sending data

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

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

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

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

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

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

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

随机推荐

python 图片爬虫

#!/usr/bin/env python #coding:utf-8 import urllib import re def GetHtml(url): """获取HT ...

510C

510C 拓扑排序:将那些受影响的字母拓扑排序,其后的输出 #include #include #include ...

回调的代理(delegate)实现

1.CoreManage.h #import @protocol SampleProtocol; //声明核心类的属性和方法 @inte ...

MySQL数据表生成ER图

遇到没有说明文档的数据库的时候,一张一张表去分析,需要花费很长时间和精力. 幸好有一些工具,可以帮助我们生成ER图,这样看起来就一目了然: 下面我将自己的一次实践记录于下,供参考: 1.下载并安装工具 ...

SAP系统联机应用程序帮助

新安装好的SAP系统,联机帮助是不能用的. 通过菜单中的“帮助-应用程序帮助” 和“帮助-SAP库”都打不开任何帮助页面.这并不是因为SAPgui安装不完整,而是因为SAP的帮助系统本身就不包含在GU ...

转:Cache相关

声明:本文截取自http://blog.163.com/ac_victory/blog/static/1033187262010325113928577/ (1)“Cache”是什么 Cache(即高 ...

hdoj 2063 过山车【匈牙利算法+邻接矩阵or邻接表】

过山车 Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submiss ...

【POJ 2010 Moo University-Financial Aid】优先级队列

题目链接:http://poj.org/problem?id=2010 题意:C只牛犊,各有自己的分数score和申请的补助aid,现要选出N只(N为奇数),使得其aid的总和不超过F,且按score ...

licecap软件——简单做出app的效果gif图

最近想在博客或者是git上放gif效果图,找了许久,终于是找到了这款软件,不到500Kb大小,使用简单 软件名为licecap,直接百度上搜索即可 使用的话,打开软件,就会出现一个窗口 之后,可以改变 ...

【Linux】linux查看日志文件内容命令tail、cat、tac、head、echo

linux查看日志文件内容命令tail.cat.tac.head.echo tail -f test.log你会看到屏幕不断有内容被打印出来. 这时候中断第一个进程Ctrl-C, ---------- ...

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值