iis服务器助手广告广告
返回顶部
首页 > 资讯 > 数据库 >MySQL查询中Sending data占用大量时间怎么办
  • 547
分享到

MySQL查询中Sending data占用大量时间怎么办

2024-04-02 19:04:59 547人浏览 独家记忆
摘要

这篇文章主要介绍了Mysql查询中Sending data占用大量时间怎么办,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。原sql执行计划:

这篇文章主要介绍了Mysql查询中Sending data占用大量时间怎么办,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。

sql执行计划:

EXPLaiN

SELECT tm.id,

tm.to_no ,

tm.source_WEBsite_id ,

tm.warehouse_name ,

tm.target_website_id ,

tm.channel_name ,

tm.sale_channel_name ,

ti.product_basic_id ,

ti.product_basic_no ,

ti.product_basic_name ,

ti.tax_rate ,

ti.sale_tax_rate ,

ti.quantity/ti.main_aux_ratio quantity ,

ti.unit_cost * ti.main_aux_ratio unit_cost,

ti.unit_cost * IFNULL(ti.quantity,0) amount,

ti.received_Qty,

tm.po_no ,

tm.source_website_name,

tm.target_website_name,

createUser.user_name create_user_name,

auditUser.user_name audit_user_name,

outUser.user_name out_user_name,

DATE_FORMAT(tm.create_time, '%Y/%m/%d %H:%i:%s') create_time ,

DATE_FORMAT(tp.audit_time, '%Y/%m/%d %H:%i:%s') audit_time ,

DATE_FORMAT(tp.out_time, '%Y/%m/%d %H:%i:%s') out_time ,

tm.`status`,

DATE_FORMAT(tp.in_time, '%Y/%m/%d %H:%i:%s') receive_time,

IFNULL(ti.return_qty/ti.main_aux_ratio, 0) return_qty,

ti.unit_cost * IFNULL(ti.received_qty,0) return_amount,

DATE_FORMAT(td.production_date, '%Y/%m/%d') production_date,

td.location_name off_location_name FROM transfer_master AS tm

LEFT JOIN transfer_item AS ti ON tm.id = ti.to_id

LEFT JOIN transfer_detail td ON tm.id = td.transfer_id AND ti.product_basic_id = td.product_basic_id

LEFT JOIN transfer_operation tp ON tp.transfer_id = tm.id

LEFT JOIN sys_user createUser ON createUser.sysno = tm.create_user_id

LEFT JOIN sys_user auditUser ON auditUser.sysno = tp.audit_user_id

LEFT JOIN sys_user outUser ON outUser.sysno = tp.out_user_id WHERE 1 = 1 AND tm.source_website_id IN (3) AND tm.status = 110 AND tm.create_time >= '2019-04-01' AND tm.create_time < '2019-10-01' ORDER BY tm.create_time DESC

MySQL查询中Sending data占用大量时间怎么办以上SQL很多列没有用到索引

1 queries executed, 1 success, 0 errors, 0 warnings

查询:SELECT tm.id, tm.to_no , tm.source_website_id , tm.warehouse_name , tm.target_website_id , tm.channel_name , tm.sale_channel_nam...

共 1000 行受到影响

执行耗时   : 1 min 10 sec

传送时间   : 0.016 sec

总耗时      : 1 min 10 sec

MySQL查询中Sending data占用大量时间怎么办

Sending data花费时间最长。

“Sending data”状态的含义,原来这个状态的名称很具有误导性,所谓的“Sending data”并不是单纯的发送数据,而是包括“收集 + 发送 数据”。

这里的关键是为什么要收集数据,原因在于:mysql使用“索引”完成查询结束后,mysql得到了一堆的行id,如果有的列并不在索引中,mysql需要重新到“数据行”上将需要返回的数据读取出来返回个客户端。

对字段添加索引。

第一条索引:ALTER TABLE `transfer_detail` ADD INDEX idx_transfer_id (`transfer_id`);

第二条索引:ALTER TABLE `transfer_item` ADD INDEX idx_to_id (`to_id`);

第三条索引:ALTER TABLE `transfer_operation` ADD INDEX idx_transfer_id (`transfer_id`);

加第一条索引:ALTER TABLE `transfer_detail` ADD INDEX idx_transfer_id (`transfer_id`);

执行计划:

MySQL查询中Sending data占用大量时间怎么办消耗时间:

MySQL查询中Sending data占用大量时间怎么办

加第二条索引:ALTER TABLE `transfer_item` ADD INDEX idx_to_id (`to_id`);

执行计划:

MySQL查询中Sending data占用大量时间怎么办消耗时间:

MySQL查询中Sending data占用大量时间怎么办

加第三条索引:ALTER TABLE `transfer_operation` ADD INDEX idx_transfer_id (`transfer_id`);

执行计划:

MySQL查询中Sending data占用大量时间怎么办消耗时间:

MySQL查询中Sending data占用大量时间怎么办

优化完成。

tm表的条件字段数据分布不均匀,不建议加索引。

对条件字段添加索引后,Sending data消耗时间大幅下降。

感谢你能够认真阅读完这篇文章,希望小编分享的“MySQL查询中Sending data占用大量时间怎么办”这篇文章对大家有帮助,同时也希望大家多多支持编程网,关注编程网数据库频道,更多相关知识等着你来学习!

您可能感兴趣的文档:

--结束END--

本文标题: MySQL查询中Sending data占用大量时间怎么办

本文链接: https://www.lsjlt.com/news/62293.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • MySQL查询中Sending data占用大量时间怎么办
    这篇文章主要介绍了MySQL查询中Sending data占用大量时间怎么办,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。原SQL执行计划:...
    99+
    2024-04-02
  • MySQL中Sending data查询慢怎么办
    这篇文章将为大家详细讲解有关MySQL中Sending data查询慢怎么办,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。一、事故现场 SELECT o...
    99+
    2024-04-02
  • MySQL中怎么查看表占用空间大小
    今天就跟大家聊聊有关MySQL中怎么查看表占用空间大小,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。代码1,切换数据库use inform...
    99+
    2024-04-02
  • Mysql中怎么按时间查询
    Mysql中怎么按时间查询,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。 查询昨天的数据   ...
    99+
    2024-04-02
  • MySQL怎么查看表占用空间大小
    这篇文章主要介绍“MySQL怎么查看表占用空间大小”,在日常操作中,相信很多人在MySQL怎么查看表占用空间大小问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”MySQL怎么查...
    99+
    2024-04-02
  • Mysql中使用时间查询
    Mysql中使用时间查询 一、使用等号查询二、查询某月、某日、某年三、查询时间范围 一、使用等号查询 可以像普通查询使用等号进行查询,但必须查询时间必须和字段对应时间完全相等,比如我要查下面这个值 sql如下: SELEC&#...
    99+
    2023-08-22
    mysql 数据库
  • SQL怎么查询表占用空间
    在SQL中,可以使用系统表来查询表占用的空间。不同的数据库管理系统可能有不同的系统表和查询语法,以下是一些常见数据库管理系统的示例:...
    99+
    2023-09-29
    SQL
  • Mysql中如何使用时间查询
    这篇文章主要介绍了Mysql中如何使用时间查询的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇Mysql中如何使用时间查询文章都会有所收获,下面我们一起来看看吧。一、使用等号查询...
    99+
    2023-03-20
    mysql
  • MySQL怎么查询Binlog生成时间
    这篇文章主要介绍“MySQL怎么查询Binlog生成时间”,在日常操作中,相信很多人在MySQL怎么查询Binlog生成时间问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”MySQL怎么查询Binlog生成时间...
    99+
    2023-07-05
  • Mysql怎么查询时间段交集
    这篇文章主要介绍Mysql怎么查询时间段交集,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!Mysql 查询时间段交集使用场景数据库表有两个字段starttime,endtime。现在给出(a,b)的时间段,查出和(s...
    99+
    2023-06-15
  • sql怎么查询最大时间的数据
    要查询最大时间的数据,可以使用以下SQL语句: SELECT * FROM table_name WHERE ti...
    99+
    2024-04-09
    sql
  • mysql大数据量查询怎么优化
    在处理大数据量查询时,可以通过以下几种方法来优化查询性能: 使用合适的索引:通过在查询字段上创建索引,可以大大减少查询所需的时间...
    99+
    2024-04-12
    mysql
  • mysql怎么查询一段时间记录
    这篇文章主要介绍mysql怎么查询一段时间记录,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!mysql查询一段时间记录的方法:1、查询N天内记录,代码为【WHERE TO_D...
    99+
    2024-04-02
  • oracle怎么查看表占用空间大小
    你可以使用以下SQL查询来查看表占用的空间大小: SELECT table_name, ROUND(SUM(...
    99+
    2024-05-13
    oracle
  • hive怎么查看表占用空间大小
    要查看Hive表占用的空间大小,可以使用以下命令: 首先进入Hive命令行界面: hive 然后使用DESCRIBE FOR...
    99+
    2024-03-01
    hive
  • oracle怎么查询各个表占用的大小
    可以使用以下SQL语句查询Oracle数据库中各个表占用的大小: SELECT owner, table_name, rou...
    99+
    2024-04-09
    oracle
  • linux怎么查看目录占用空间大小
    这篇文章主要介绍“linux怎么查看目录占用空间大小”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“linux怎么查看目录占用空间大小”文章能帮助大家解决问题。 ...
    99+
    2023-01-06
    linux
  • mysql怎么按时间降序查询数据
    要按时间降序查询数据,可以使用以下语句: SELECT * FROM table_name ORDER BY time_co...
    99+
    2024-03-01
    mysql
  • MySQL日期及时间字段怎么查询
    这篇“MySQL日期及时间字段怎么查询”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“MySQL日期及时间字段怎么查询”文章吧...
    99+
    2023-06-30
  • ubuntu怎么查询程序占用的内存大小
    ubuntu查询程序占用内存大小的方法:使用快捷键Ctrl+Alt+t打开终端。输入以下命令即可查到相关信息,命令如下://方法一#ps aux 返回的结果中VSZ(或VSS)列表示程序占用了多少虚拟内存,RSS列表示程序占用了多少物理内存...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作