今天帮运营导数据时发现sql执行速度非常慢,嗯,按照之前的编写习惯,后来跟架构师一起分析讨论,改进了下,现记录分析如下

一、测试表、sql情况set @bgDate = '20171213';

set @edDate = '20171213';

/*编号①*/

SELECT TA_ID,SUM(TB.amount),SUM(TB.fee) FROM

(SELECT ORDER_NO,TA_ID FROM Table_A  WHERE TA_STATUS = 100 AND TA_CHANNEL_MERCH_NO = '201712130001'

AND SETTLE_DATE <= @endDate AND SETTLE_DATE >= @begDate )TA

LEFT JOIN

(SELECT ORDER_NO,AMOUNT,fee FROM Table_B) TB

ON TA.ORDER_NO = TB.ORDER_NO

GROUP BY TA.TA_ID;

/*编号②*/

SELECT TA.`TA_ID` AS TA_ID , sum(TA.`AMOUNT`)  AS sumAmount , sum(TB.`fee`)   AS sumMerFee FROM

`Table_A` TA

LEFT JOIN

`Table_B` TB

ON TA.`ORDER_NO` = TB.`ORDER_NO`

WHERE  TA.`SETTLE_DATE` >= @begDate AND TA.`SETTLE_DATE` <= @endDate

AND TA.`TA_CHANNEL_MERCH_NO`='201712130001'

AND TA.`TA_STATUS`=100

GROUP BY TA.`TA_ID`

/*以下为表的索引情况*/

Table_A 索引:TA_ID、order_no、settle_date

Table_B 索引:order_no

/*以下为表的数据量情况*/

Table_A:10W+条记录

Table_B:10W+条记录

二、测试结果

①90s才出结果;

②1.5s就出结果;

三、分析

1、navicat-解释

编号①的TA进行了全表扫描;

2、自主分析

编号①sql

(1)虽然已减少了表数据量,但是由于新创了临时表TA、TB,都无索引,在left join时速度较慢;

(2)最后group by时,TA.TA_ID也无索引,导致再一次降低速度;

编号②sql

(1)虽然TA、TB直接全表left join,但是连接的order_no已做索引,速度还是能保证的;

(2)where和group by中涉及部分字段已加索引。

mysql多表分析_mysql多表查询实例结果及分析-2017.12.14相关推荐

  1. mysql多表 性能_Mysql 多表联合查询效率分析及优化

    1. 多表连接类型 1. 笛卡尔积(交叉连接)在MySQL中可以为CROSS JOIN或者省略CROSS即JOIN,或者使用','  如: SELECT*FROMtable1CROSSJOINtabl ...

  2. mysql union all 别名_MySQL Union合并查询数据及表别名、字段别名用法分析

    本文实例讲述了MySQL Union合并查询数据及表别名.字段别名用法.分享给大家供大家参考,具体如下: union关键字 SELECT s_id, f_name, f_price FROM frui ...

  3. mysql 表损坏_MYSQL数据表损坏的原因分析和修复方法小结(推荐)

    1.表损坏的原因分析以下原因是导致mysql 表毁坏的常见原因: 1. 服务器突然断电导致数据文件损坏. 2. 强制关机,没有先关闭mysql 服务. 3. mysqld 进程在写表时被杀掉. 4. ...

  4. mysql 检查哪些项目_mysql根据内容查询在哪个表.go

    package main import ( "database/sql" "errors" "fmt" "github.com/g ...

  5. mysql 添加字段 描述_mysql新建表 中是否自带描述字段?

    展开全部 可以直接自己添加描述字段. DROP TABLE IF EXISTS `user`; CREATE TABLE user ( idBIGINT(20) UNSIGNED NOT NULL A ...

  6. mysql 分表原理_MYSQL 分表原理(转)

    简介: 引用MySQL官方文档中的一段话:MERGE存储引擎,也被认识为MRG_MyISAM引擎,是一个相同的可以被当作一个来用的MyISAM表的集合."相同"意味着所有表同样的列 ...

  7. mysql如何根据业务分表设计_mysql分表分库的应用场景和设计方式

    很多朋友在论坛和留言区域问mysql在什么情况下才需要进行分库分表,以及采用何种设计方式才是最优的选择,根据这些问题,小编为大家整理了关于MySQL分库分表的应用场景和最优的设计方式举例. 一. 分表 ...

  8. mysql表分区和表空间_mysql分表和分区的区别浅析

    一.什么是mysql分表和分区 什么是分表,从表面意思上看呢,就是把一张表分成N多个小表 什么是分区,分区呢就是把一张表的数据分成N多个区块,这些区块可以在同一个磁盘上,也可以在不同的磁盘上 二.my ...

  9. mysql unicode转汉字_Mysql数据库表引擎与字符集

    Mysql数据库表引擎与字符集 1.服务器处理客户端请求 其实不论客户端进程和服务器进程是采用哪种方式进行通信,最后实现的效果都是:客户端进程向服务器进程发送一段文本(MySQL语句),服务器进程处理 ...

  10. mysql 数据库表重建_mysql 数据库表重建

    数据库内核月报 - 2015 / 09-MySQL · 捉虫动态 · 建表过程中crash造成重建表失败 问题描述 主库的create table语句传到备库,备库SQL线程执行过程中报错: Erro ...

最新文章

  1. 跟我学Spring Cloud(Finchley版)-08-Ribbon深入
  2. oracle+view性能,Oracle 10g的隐含参数_complex_view_merging引发的性能问题
  3. [No000053]我25岁了,是应该继续挣钱,还是选择自己的爱好?--正好庆祝自己25岁生日...
  4. 数据库自增主键可能产生的问题
  5. php fpm listen.owner,php-fpm配置解释
  6. 充电网完成数千万元Pre-B轮融资,将会聚焦新能源乘用车市场
  7. spring(java,js,html) 截图上传
  8. C语言变量未赋初值时,输出为乱七八糟解释
  9. 一次非常有意思的SQL优化经历:从30248.271s到0.001s
  10. 设置嵌入式系统开机自动启动程序
  11. 两个音轨合并_怎样将两个音频合并在一起?超详细教程!
  12. 敏感词过滤的算法原理之 Aho-Corasick 算法
  13. 关于STM32的IAP超详细图文解说
  14. 企业快速构建可落地的IT服务管理体系的五大关键点
  15. linux下数学公式的编辑器,如何利用开源中国Markdown/编辑器优雅的写出数学公式?(KaTeX公式使用篇)...
  16. Caused by: java.sql.BatchUpdateException: ORA-00001: 违反唯一约束条件 (DSPACE.SYS_C007868)
  17. 中国移动国际iSolutions:中国首张覆盖全球的云网络
  18. BP算法误差逆传播参数更新公式推导
  19. 行内元素设置margin:0 auto无效的问题
  20. Selenium小技巧 修改ip+ua 改变窗口大小 手机模式 加载本地缓存

热门文章

  1. All in会员经济的知乎,能否实现商业化大跃进?
  2. 基于链表的快速排序C语言,双向链表的快速排序算法,编译通过,程序会崩溃,求助一下各位...
  3. oracle面临的挑战,Oracle SUN,严峻的挑战(一)
  4. python竞赛_浅谈Python在信息学竞赛中的运用及Python的基本用法
  5. 调用python_「Python 进阶」python 实现链式调用
  6. oracle util_mail,ORACLE UTL_MAIL 发送Email 无附件 有附件
  7. android设计ip输入框,Android下自定义IP控件
  8. data:image/png;base64,, CTF杂项base64图片隐写-河南省第二届金盾信安杯
  9. Python基础教程:获取list中指定元素的索引
  10. Python字符串常用函数详解