mysql> explain SELECT  c.`sn` clientSn,asm.`clientManagerSn`,pry.`productSn`,1 TYPE,pr.`capitalBalance`,pr.`yieldBalance`,pry.`realValueEndDate`,pr.`status`
-> FROM `ProductRepayment` pr
-> LEFT JOIN `ProductRepay` pry ON pry.`productSn` = pr.`productSn`
-> LEFT JOIN `ProductAccess` pa ON pa.`productSn` = pr.`productSn`
-> LEFT JOIN `Client` c ON c.`sn` = pr.`clientSn`
-> LEFT JOIN `AssignClientManager` asm ON asm.`clientSn`=pr.`clientSn`
-> WHERE pa.`supportTransfer` =2
-> UNION ALL
-> SELECT c.`sn` clientSn,asm.`clientManagerSn`,hd.productSn,2,thd.capitalBalance,thd.yieldBalance,thd.settlementDate,IF(thd.status =1 OR thd.status=2,1,2)
-> FROM `TransferProduct` tp
-> LEFT JOIN `TransferProductHolding` thd ON thd.transferProductSn = tp.sn
-> LEFT JOIN `ClientProductHolding` hd ON hd.sn = tp.holdingSn
-> LEFT JOIN `Client` c ON c.`sn` = thd.clientSn
-> LEFT JOIN `AssignClientManager` asm ON asm.`clientSn`= c.`sn`
-> LEFT JOIN `ProductAccess` pa ON pa.`productSn` = hd.productSn
-> WHERE pa.`supportTransfer` =1
-> UNION ALL
-> SELECT c.`sn` clientSn,asm.`clientManagerSn`,ch.productSn,3,ch.capitalBalance,ch.yieldBalance,pr.settlementDate,ch.status-1
-> FROM `ClientHolding` ch
-> LEFT JOIN `Client` c ON c.`sn` = ch.clientSn
-> LEFT JOIN `AssignClientManager` asm ON asm.`clientSn`= c.`sn`
-> LEFT JOIN `ProductAccess` pa ON pa.`productSn` = ch.productSn
-> LEFT JOIN `ProductRepay` pr ON pr.`productSn` = pa.`productSn`
-> WHERE pa.`supportTransfer` =1
-> UNION ALL
-> SELECT c.`sn` clientSn,asm.`clientManagerSn`,ci.productSn,1,ci.investAmount,NULL,NULL,0
-> FROM `ClientInvestOrder` ci
-> LEFT JOIN `Client` c ON c.`sn` = ci.clientSn
-> LEFT JOIN `AssignClientManager` asm ON asm.`clientSn`= c.`sn`;
+----+--------------+----------------+--------+---------------+---------+---------+-------------------+------+----------------------------------------------------+
| id | select_type | table | type | possible_keys | key | key_len | ref | rows | Extra |
+----+--------------+----------------+--------+---------------+---------+---------+-------------------+------+----------------------------------------------------+
| 1 | PRIMARY | pr | ALL | NULL | NULL | NULL | NULL | 7081 | NULL |
| 1 | PRIMARY | pa | eq_ref | PRIMARY | PRIMARY | 4 | zjzc.pr.productSn | 1 | Using where |
| 1 | PRIMARY | pry | eq_ref | PRIMARY | PRIMARY | 4 | zjzc.pr.productSn | 1 | NULL |
| 1 | PRIMARY | c | eq_ref | PRIMARY | PRIMARY | 4 | zjzc.pr.clientSn | 1 | Using index |
| 1 | PRIMARY | asm | ALL | NULL | NULL | NULL | NULL | 4618 | Using where; Using join buffer (Block Nested Loop) |
| 2 | UNION | tp | ALL | NULL | NULL | NULL | NULL | 53 | NULL |
| 2 | UNION | hd | eq_ref | PRIMARY | PRIMARY | 4 | zjzc.tp.holdingSn | 1 | NULL |
| 2 | UNION | pa | eq_ref | PRIMARY | PRIMARY | 4 | zjzc.hd.productSn | 1 | Using where |
| 2 | UNION | thd | ALL | NULL | NULL | NULL | NULL | 78 | Using where; Using join buffer (Block Nested Loop) |
| 2 | UNION | c | eq_ref | PRIMARY | PRIMARY | 4 | zjzc.thd.clientSn | 1 | Using index |
| 2 | UNION | asm | ALL | NULL | NULL | NULL | NULL | 4618 | Using where; Using join buffer (Block Nested Loop) |
| 3 | UNION | ch | ALL | NULL | NULL | NULL | NULL | 6426 | NULL |
| 3 | UNION | pa | eq_ref | PRIMARY | PRIMARY | 4 | zjzc.ch.productSn | 1 | Using where |
| 3 | UNION | pr | eq_ref | PRIMARY | PRIMARY | 4 | zjzc.ch.productSn | 1 | NULL |
| 3 | UNION | c | eq_ref | PRIMARY | PRIMARY | 4 | zjzc.ch.clientSn | 1 | Using index |
| 3 | UNION | asm | ALL | NULL | NULL | NULL | NULL | 4618 | Using where; Using join buffer (Block Nested Loop) |
| 4 | UNION | ci | ALL | NULL | NULL | NULL | NULL | 7258 | NULL |
| 4 | UNION | c | eq_ref | PRIMARY | PRIMARY | 4 | zjzc.ci.clientSn | 1 | Using index |
| 4 | UNION | asm | ALL | NULL | NULL | NULL | NULL | 4618 | Using where; Using join buffer (Block Nested Loop) |
| NULL | UNION RESULT | <union1,2,3,4> | ALL | NULL | NULL | NULL | NULL | NULL | Using temporary |
+----+--------------+----------------+--------+---------------+---------+---------+-------------------+------+----------------------------------------------------+
20 rows in set (0.00 sec) 创建索引; mysql> create index AssignClientManager_idx1 on AssignClientManager(clientSn);
mysql> explain SELECT c.`sn` clientSn,asm.`clientManagerSn`,pry.`productSn`,1 TYPE,pr.`capitalBalance`,pr.`yieldBalance`,pry.`realValueEndDate`,pr.`status`
-> FROM `ProductRepayment` pr
-> LEFT JOIN `ProductRepay` pry ON pry.`productSn` = pr.`productSn`
-> LEFT JOIN `ProductAccess` pa ON pa.`productSn` = pr.`productSn`
-> LEFT JOIN `Client` c ON c.`sn` = pr.`clientSn`
-> LEFT JOIN `AssignClientManager` asm ON asm.`clientSn`=pr.`clientSn`
-> WHERE pa.`supportTransfer` =2
-> UNION ALL
-> SELECT c.`sn` clientSn,asm.`clientManagerSn`,hd.productSn,2,thd.capitalBalance,thd.yieldBalance,thd.settlementDate,IF(thd.status =1 OR thd.status=2,1,2)
-> FROM `TransferProduct` tp
-> LEFT JOIN `TransferProductHolding` thd ON thd.transferProductSn = tp.sn
-> LEFT JOIN `ClientProductHolding` hd ON hd.sn = tp.holdingSn
-> LEFT JOIN `Client` c ON c.`sn` = thd.clientSn
-> LEFT JOIN `AssignClientManager` asm ON asm.`clientSn`= c.`sn`
-> LEFT JOIN `ProductAccess` pa ON pa.`productSn` = hd.productSn
-> WHERE pa.`supportTransfer` =1
-> UNION ALL
-> SELECT c.`sn` clientSn,asm.`clientManagerSn`,ch.productSn,3,ch.capitalBalance,ch.yieldBalance,pr.settlementDate,ch.status-1
-> FROM `ClientHolding` ch
-> LEFT JOIN `Client` c ON c.`sn` = ch.clientSn
-> LEFT JOIN `AssignClientManager` asm ON asm.`clientSn`= c.`sn`
-> LEFT JOIN `ProductAccess` pa ON pa.`productSn` = ch.productSn
-> LEFT JOIN `ProductRepay` pr ON pr.`productSn` = pa.`productSn`
-> WHERE pa.`supportTransfer` =1
-> UNION ALL
-> SELECT c.`sn` clientSn,asm.`clientManagerSn`,ci.productSn,1,ci.investAmount,NULL,NULL,0
-> FROM `ClientInvestOrder` ci
-> LEFT JOIN `Client` c ON c.`sn` = ci.clientSn
-> LEFT JOIN `AssignClientManager` asm ON asm.`clientSn`= c.`sn`;
+----+--------------+----------------+--------+--------------------------+--------------------------+---------+-------------------+------+----------------------------------------------------+
| id | select_type | table | type | possible_keys | key | key_len | ref | rows | Extra |
+----+--------------+----------------+--------+--------------------------+--------------------------+---------+-------------------+------+----------------------------------------------------+
| 1 | PRIMARY | pr | ALL | NULL | NULL | NULL | NULL | 7081 | NULL |
| 1 | PRIMARY | pa | eq_ref | PRIMARY | PRIMARY | 4 | zjzc.pr.productSn | 1 | Using where |
| 1 | PRIMARY | pry | eq_ref | PRIMARY | PRIMARY | 4 | zjzc.pr.productSn | 1 | NULL |
| 1 | PRIMARY | c | eq_ref | PRIMARY | PRIMARY | 4 | zjzc.pr.clientSn | 1 | Using index |
| 1 | PRIMARY | asm | ref | AssignClientManager_idx1 | AssignClientManager_idx1 | 4 | zjzc.pr.clientSn | 1 | NULL |
| 2 | UNION | tp | ALL | NULL | NULL | NULL | NULL | 53 | NULL |
| 2 | UNION | hd | eq_ref | PRIMARY | PRIMARY | 4 | zjzc.tp.holdingSn | 1 | NULL |
| 2 | UNION | pa | eq_ref | PRIMARY | PRIMARY | 4 | zjzc.hd.productSn | 1 | Using where |
| 2 | UNION | thd | ALL | NULL | NULL | NULL | NULL | 78 | Using where; Using join buffer (Block Nested Loop) |
| 2 | UNION | c | eq_ref | PRIMARY | PRIMARY | 4 | zjzc.thd.clientSn | 1 | Using index |
| 2 | UNION | asm | ref | AssignClientManager_idx1 | AssignClientManager_idx1 | 4 | zjzc.c.sn | 1 | NULL |
| 3 | UNION | ch | ALL | NULL | NULL | NULL | NULL | 6426 | NULL |
| 3 | UNION | pa | eq_ref | PRIMARY | PRIMARY | 4 | zjzc.ch.productSn | 1 | Using where |
| 3 | UNION | pr | eq_ref | PRIMARY | PRIMARY | 4 | zjzc.ch.productSn | 1 | NULL |
| 3 | UNION | c | eq_ref | PRIMARY | PRIMARY | 4 | zjzc.ch.clientSn | 1 | Using index |
| 3 | UNION | asm | ref | AssignClientManager_idx1 | AssignClientManager_idx1 | 4 | zjzc.c.sn | 1 | NULL |
| 4 | UNION | ci | ALL | NULL | NULL | NULL | NULL | 7258 | NULL |
| 4 | UNION | c | eq_ref | PRIMARY | PRIMARY | 4 | zjzc.ci.clientSn | 1 | Using index |
| 4 | UNION | asm | ref | AssignClientManager_idx1 | AssignClientManager_idx1 | 4 | zjzc.c.sn | 1 | NULL |
| NULL | UNION RESULT | <union1,2,3,4> | ALL | NULL | NULL | NULL | NULL | NULL | Using temporary |
+----+--------------+----------------+--------+--------------------------+--------------------------+---------+-------------------+------+----------------------------------------------------+
20 rows in set (0.00 sec)

mysql 查询优化案例的更多相关文章

  1. mysql 查询优化案例汇总

    一 简介:此文章为经历过的sql案例集合和相关思路 二 案例1: 现象: 测试环境出现select语句,join2张表多次join,explain结果如下 出现 using where,using j ...

  2. mysql优化案例

    MySQL优化案例 Mysql5.1大表分区效率测试 Mysql5.1大表分区效率测试MySQL | add at 2009-03-27 12:29:31 by PConline | view:60, ...

  3. mysql查询优化之二:查询优化器的局限性

    在<mysql查询优化之一:mysql查询优化常用方式>一文中列出了一些优化器常用的优化手段.查询优化器在提供这些特性的同时,也存在一定的局限性,这些局限性往往会随着MySQL版本的升级而 ...

  4. 010 --MySQL查询优化器的局限性

    MySQL的万能"嵌套循环"并不是对每种查询都是最优的.不过还好,mysql查询优化器只对少部分查询不适用,而且我们往往可以通过改写查询让mysql高效的完成工作.在这我们先来看看 ...

  5. Atitit Mysql查询优化器 存取类型 范围存取类型 索引存取类型 AND or的分析

    Atitit Mysql查询优化器 存取类型 范围存取类型 索引存取类型 AND or的分析     Atitit Mysql查询优化器 存取类型 范围存取类型 索引存取类型 AND or的分析1 存 ...

  6. MySQL查询优化之explain的深入解析

    在分析查询性能时,考虑EXPLAIN关键字同样很管用.EXPLAIN关键字一般放在SELECT查询语句的前面,用于描述MySQL如何执行查询操作.以及MySQL成功返回结果集需要执行的行数.expla ...

  7. 1025WHERE执行顺序以及MySQL查询优化器

    转自http://blog.csdn.net/zhanyan_x/article/details/25294539 -- WHERE执行顺序-- 过滤比较多的放在前面,然后更加容易匹配,从左到右进行执 ...

  8. JDBC操作MySQL数据库案例

    JDBC操作MySQL数据库案例 import java.sql.Connection; import java.sql.DriverManager; import java.sql.Prepared ...

  9. MySQL查询优化:查询慢原因和解决技巧

    在开发的朋友特别是和mysql有接触的朋友会碰到有时mysql查询很慢,当然我指的是大数据量百万千万级了,不是几十条了,下面我们来看看解决查询慢的办法. MySQL查询优化:查询慢原因和解决方法 会经 ...

随机推荐

  1. 翻转句子中单词的顺序 C语言

    输入一个英文句子,翻转句子中单词的顺序,但单词内字符的顺序不变.句子中单词以空格符隔开. 为简单起见,标点符号和普通字母一样处理. 比如将"I am a student"转化为&q ...

  2. YouTube为什么打不开?以及简便的訪问的方法/解决方式!

    在站点统计中看到好多人通过百度或者谷歌(Google)搜索引擎搜:YouTube怎么上不去,怎样不用代理server訪问YouTube,YouTube上不去的解决的方法,YouTube怎样訪问等等.事 ...

  3. javascript每日一练(六)——事件一

    一.event对象 var oEvent = ev || event;//获取事件对象 oEvent.clientX oEvent.clientY//获取鼠标坐标 oEvent.cancelBubbl ...

  4. win7下:MySQL-Front的下载与安装

    MySQL-Front是mysql数据库的可视化图形工具,因为它是“实时”的应用软件,它可以提供比系统内建在PHP和HTML上更为精炼的用户界面. 参考百度经验:http://jingyan.baid ...

  5. 清华集训2014 day1 task2 主旋律

    题目 这可算是一道非常好的关于容斥原理的题了. 算法 好吧,这题我毫无思路,直接给正解. 首先,问题的正面不容易求,那么就求反面吧: 有多少种添加边的方案,使得这个图是DAG图(这里及以下所说的DAG ...

  6. hibernate笔记(一)

    一.主配置文件hibernate.cfg.xml 位置:放在src目录下. 主要包含信息: 一.数据库信息    数据库方言(类的全名) 及 数据库链接信息 1.      数据库方言 2.      ...

  7. PHP - 接口 - 单一接口

    /* * 接口的使用 */ //定义接口 interface IPerosn{ public function eat(); public function water(); } //定义继承自接口的 ...

  8. Java基础07 包

    作者:Vamei 出处:http://www.cnblogs.com/vamei 欢迎转载,也请保留这段声明.谢谢! 我们已经写了一些Java程序.之前的每个Java程序都被保存为一个文件,比如Tes ...

  9. Cocos2d-x使用android拍照功能加载照片内存过大,通过另存照片尺寸大小解决

    使用2dx调用android拍照功能,拍照结束后在2dx界面显示拍照照片,如果不对照片做处理,会出现内存过大的问题,导致程序崩溃,如果仅仅另存拍照照片,则照片质量大小均下降,导致照片不够清晰,后来发现 ...

  10. TTimerThread和TThreadedTimer(都是通过WaitForSingleObject和CreateEvent来实现的)

    //////////////////////////////////////////////////// // // // ThreadedTimer 1.24 // // // // Copyrig ...