mysql多表分析_mysql多表查询实例结果及分析-2017.12.14
今天帮运营导数据时发现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相关推荐
- mysql多表 性能_Mysql 多表联合查询效率分析及优化
1. 多表连接类型 1. 笛卡尔积(交叉连接)在MySQL中可以为CROSS JOIN或者省略CROSS即JOIN,或者使用',' 如: SELECT*FROMtable1CROSSJOINtabl ...
- mysql union all 别名_MySQL Union合并查询数据及表别名、字段别名用法分析
本文实例讲述了MySQL Union合并查询数据及表别名.字段别名用法.分享给大家供大家参考,具体如下: union关键字 SELECT s_id, f_name, f_price FROM frui ...
- mysql 表损坏_MYSQL数据表损坏的原因分析和修复方法小结(推荐)
1.表损坏的原因分析以下原因是导致mysql 表毁坏的常见原因: 1. 服务器突然断电导致数据文件损坏. 2. 强制关机,没有先关闭mysql 服务. 3. mysqld 进程在写表时被杀掉. 4. ...
- mysql 检查哪些项目_mysql根据内容查询在哪个表.go
package main import ( "database/sql" "errors" "fmt" "github.com/g ...
- mysql 添加字段 描述_mysql新建表 中是否自带描述字段?
展开全部 可以直接自己添加描述字段. DROP TABLE IF EXISTS `user`; CREATE TABLE user ( idBIGINT(20) UNSIGNED NOT NULL A ...
- mysql 分表原理_MYSQL 分表原理(转)
简介: 引用MySQL官方文档中的一段话:MERGE存储引擎,也被认识为MRG_MyISAM引擎,是一个相同的可以被当作一个来用的MyISAM表的集合."相同"意味着所有表同样的列 ...
- mysql如何根据业务分表设计_mysql分表分库的应用场景和设计方式
很多朋友在论坛和留言区域问mysql在什么情况下才需要进行分库分表,以及采用何种设计方式才是最优的选择,根据这些问题,小编为大家整理了关于MySQL分库分表的应用场景和最优的设计方式举例. 一. 分表 ...
- mysql表分区和表空间_mysql分表和分区的区别浅析
一.什么是mysql分表和分区 什么是分表,从表面意思上看呢,就是把一张表分成N多个小表 什么是分区,分区呢就是把一张表的数据分成N多个区块,这些区块可以在同一个磁盘上,也可以在不同的磁盘上 二.my ...
- mysql unicode转汉字_Mysql数据库表引擎与字符集
Mysql数据库表引擎与字符集 1.服务器处理客户端请求 其实不论客户端进程和服务器进程是采用哪种方式进行通信,最后实现的效果都是:客户端进程向服务器进程发送一段文本(MySQL语句),服务器进程处理 ...
- mysql 数据库表重建_mysql 数据库表重建
数据库内核月报 - 2015 / 09-MySQL · 捉虫动态 · 建表过程中crash造成重建表失败 问题描述 主库的create table语句传到备库,备库SQL线程执行过程中报错: Erro ...
最新文章
- 跟我学Spring Cloud(Finchley版)-08-Ribbon深入
- oracle+view性能,Oracle 10g的隐含参数_complex_view_merging引发的性能问题
- [No000053]我25岁了,是应该继续挣钱,还是选择自己的爱好?--正好庆祝自己25岁生日...
- 数据库自增主键可能产生的问题
- php fpm listen.owner,php-fpm配置解释
- 充电网完成数千万元Pre-B轮融资,将会聚焦新能源乘用车市场
- spring(java,js,html) 截图上传
- C语言变量未赋初值时,输出为乱七八糟解释
- 一次非常有意思的SQL优化经历:从30248.271s到0.001s
- 设置嵌入式系统开机自动启动程序
- 两个音轨合并_怎样将两个音频合并在一起?超详细教程!
- 敏感词过滤的算法原理之 Aho-Corasick 算法
- 关于STM32的IAP超详细图文解说
- 企业快速构建可落地的IT服务管理体系的五大关键点
- linux下数学公式的编辑器,如何利用开源中国Markdown/编辑器优雅的写出数学公式?(KaTeX公式使用篇)...
- Caused by: java.sql.BatchUpdateException: ORA-00001: 违反唯一约束条件 (DSPACE.SYS_C007868)
- 中国移动国际iSolutions:中国首张覆盖全球的云网络
- BP算法误差逆传播参数更新公式推导
- 行内元素设置margin:0 auto无效的问题
- Selenium小技巧 修改ip+ua 改变窗口大小 手机模式 加载本地缓存
热门文章
- All in会员经济的知乎,能否实现商业化大跃进?
- 基于链表的快速排序C语言,双向链表的快速排序算法,编译通过,程序会崩溃,求助一下各位...
- oracle面临的挑战,Oracle SUN,严峻的挑战(一)
- python竞赛_浅谈Python在信息学竞赛中的运用及Python的基本用法
- 调用python_「Python 进阶」python 实现链式调用
- oracle util_mail,ORACLE UTL_MAIL 发送Email 无附件 有附件
- android设计ip输入框,Android下自定义IP控件
- data:image/png;base64,, CTF杂项base64图片隐写-河南省第二届金盾信安杯
- Python基础教程:获取list中指定元素的索引
- Python字符串常用函数详解