zjdev 正常访问;

mysql> explain SELECT temp.* ,
-> (SELECT COUNT(sn) FROM AssignClientManager WHERE FIND_IN_SET(clientManagerSn,temp.managerSnlist)>0) clientAccount,
-> (SELECT
-> IFNULL(SUM(capitalBalance), 0) + IFNULL(SUM(yieldBalance), 0)
-> FROM
-> ProductRepayment pr ,ProductRepay p
-> WHERE
-> pr.productSn = p.productSn AND
-> pr.clientSn IN (SELECT clientSn FROM AssignClientManager WHERE FIND_IN_SET(clientManagerSn,temp.managerSnlist)>0 )
-> AND pr.status = 1 AND DATEDIFF(p.realValueEndDate,CURDATE()) <=7 AND DATEDIFF(p.realValueEndDate,CURDATE())>=0
-> ) investBalance,
-> (SELECT
-> IFNULL(SUM(capitalBalance), 0) + IFNULL(SUM(yieldBalance), 0) + temp.availableBalance + temp.frozenWithDraw + temp.frozenPay
-> FROM
-> ProductRepayment
-> WHERE
-> clientSn = temp.sn IN (SELECT clientSn FROM AssignClientManager WHERE FIND_IN_SET(clientManagerSn,temp.managerSnlist)>0 )
-> AND STATUS = 1) totalBalance,
-> (SELECT
-> IFNULL(SUM(capitalBalance), 0) + IFNULL(SUM(yieldBalance), 0)
-> FROM
-> ProductRepayment pr
-> WHERE
-> pr.clientSn IN (SELECT clientSn FROM AssignClientManager WHERE FIND_IN_SET(clientManagerSn,temp.managerSnlist)>0 ) AND pr.status =1
-> ) unclearedBalance
-> FROM(
-> SELECT c.sn,cm.`parent`,c.`mobilePhone`,c.`userNick`,cp.`personName`,loadTreeByParent(cm.sn) AS managerSnlist,
-> cai.`availableBalance`,cai.`frozenWithDraw`,cai.`frozenPay`
-> FROM `Client` c
-> LEFT JOIN ClientManager cm ON c.`sn` = cm.`sn`
-> LEFT JOIN ClientPersonalInfo cp ON cp.`clientSn` = c.`sn`
-> LEFT JOIN ClientAssetInfo cai ON cai.`clientSn` = c.`sn`
-> WHERE cm.parent = 1496 ) temp
-> ;
+----+--------------------+---------------------+--------+---------------+---------+---------+-------------------+------+-------------------------------------------------------------------+
| id | select_type | table | type | possible_keys | key | key_len | ref | rows | Extra |
+----+--------------------+---------------------+--------+---------------+---------+---------+-------------------+------+-------------------------------------------------------------------+
| 1 | PRIMARY | <derived9> | ALL | NULL | NULL | NULL | NULL | 56 | NULL |
| 9 | DERIVED | cm | ALL | PRIMARY | NULL | NULL | NULL | 56 | Using where |
| 9 | DERIVED | c | eq_ref | PRIMARY | PRIMARY | 4 | zjzc.cm.sn | 1 | NULL |
| 9 | DERIVED | cp | eq_ref | PRIMARY | PRIMARY | 4 | zjzc.cm.sn | 1 | NULL |
| 9 | DERIVED | cai | eq_ref | PRIMARY | PRIMARY | 4 | zjzc.cm.sn | 1 | NULL |
| 7 | DEPENDENT SUBQUERY | AssignClientManager | ALL | NULL | NULL | NULL | NULL | 2126 | Using where; Start temporary |
| 7 | DEPENDENT SUBQUERY | pr | ALL | NULL | NULL | NULL | NULL | 5699 | Using where; End temporary; Using join buffer (Block Nested Loop) |
| 5 | DEPENDENT SUBQUERY | ProductRepayment | ALL | NULL | NULL | NULL | NULL | 5699 | Using where |
| 6 | DEPENDENT SUBQUERY | AssignClientManager | ALL | NULL | NULL | NULL | NULL | 2126 | Using where |
| 3 | DEPENDENT SUBQUERY | pr | ALL | NULL | NULL | NULL | NULL | 5699 | Using where |
| 3 | DEPENDENT SUBQUERY | p | eq_ref | PRIMARY | PRIMARY | 4 | zjzc.pr.productSn | 1 | Using where |
| 3 | DEPENDENT SUBQUERY | AssignClientManager | ALL | NULL | NULL | NULL | NULL | 2126 | Using where; FirstMatch(p); Using join buffer (Block Nested Loop) |
| 2 | DEPENDENT SUBQUERY | AssignClientManager | ALL | NULL | NULL | NULL | NULL | 2126 | Using where |
+----+--------------------+---------------------+--------+---------------+---------+---------+-------------------+------+-------------------------------------------------------------------+
13 rows in set (0.00 sec) mysql select_type : <derived9> 派生表 DERIVED:被驱动的SELECT子查询(子查询位于FROM子句) DEPENDENT SUBQUERY:子查询中首个SELECT,但依赖于外层的表(如果有多个子查询存在) +----+--------------------+---------------------+------------+--------+---------------+---------+---------+-------------------+------+----------+--------------------------------------------------------------------+
| id | select_type | table | partitions | type | possible_keys | key | key_len | ref | rows | filtered | Extra |
+----+--------------------+---------------------+------------+--------+---------------+---------+---------+-------------------+------+----------+--------------------------------------------------------------------+
| 1 | PRIMARY | cm | NULL | ALL | PRIMARY | NULL | NULL | NULL | 92 | 10.00 | Using where |
| 1 | PRIMARY | c | NULL | eq_ref | PRIMARY | PRIMARY | 4 | zjzc.cm.sn | 1 | 100.00 | NULL |
| 1 | PRIMARY | cp | NULL | eq_ref | PRIMARY | PRIMARY | 4 | zjzc.cm.sn | 1 | 100.00 | NULL |
| 1 | PRIMARY | cai | NULL | eq_ref | PRIMARY | PRIMARY | 4 | zjzc.cm.sn | 1 | 100.00 | NULL |
| 7 | DEPENDENT SUBQUERY | pr | NULL | ALL | NULL | NULL | NULL | NULL | 7559 | 10.00 | Using where |
| 7 | DEPENDENT SUBQUERY | AssignClientManager | NULL | ALL | NULL | NULL | NULL | NULL | 2817 | 10.00 | Using where; FirstMatch(pr); Using join buffer (Block Nested Loop) |
| 5 | DEPENDENT SUBQUERY | ProductRepayment | NULL | ALL | NULL | NULL | NULL | NULL | 7559 | 1.00 | Using where |
| 6 | DEPENDENT SUBQUERY | AssignClientManager | NULL | ALL | NULL | NULL | NULL | NULL | 2817 | 10.00 | Using where |
| 3 | DEPENDENT SUBQUERY | pr | NULL | ALL | NULL | NULL | NULL | NULL | 7559 | 10.00 | Using where |
| 3 | DEPENDENT SUBQUERY | p | NULL | eq_ref | PRIMARY | PRIMARY | 4 | zjzc.pr.productSn | 1 | 100.00 | Using where |
| 3 | DEPENDENT SUBQUERY | AssignClientManager | NULL | ALL | NULL | NULL | NULL | NULL | 2817 | 10.00 | Using where; FirstMatch(p); Using join buffer (Block Nested Loop) |
| 2 | DEPENDENT SUBQUERY | AssignClientManager | NULL | ALL | NULL | NULL | NULL | NULL | 2817 | 100.00 | Using where |
+----+--------------------+---------------------+------------+--------+---------------+---------+---------+-------------------+------+----------+--------------------------------------------------------------------+ mysql> explain SELECT temp.* ,
-> (SELECT COUNT(sn) FROM AssignClientManager WHERE FIND_IN_SET(clientManagerSn,temp.managerSnlist)>0) clientAccount
->
->
-> FROM (
-> SELECT c.sn,cm.`parent`,c.`mobilePhone`,c.`userNick`,cp.`personName`,loadTreeByParent(cm.sn) AS managerSnlist,
-> cai.`availableBalance`,cai.`frozenWithDraw`,cai.`frozenPay`
-> FROM `Client` c
-> LEFT JOIN ClientManager cm ON c.`sn` = cm.`sn`
-> LEFT JOIN ClientPersonalInfo cp ON cp.`clientSn` = c.`sn`
-> LEFT JOIN ClientAssetInfo cai ON cai.`clientSn` = c.`sn`
-> WHERE cm.parent = 1496 ) temp
-> ;
+----+--------------------+---------------------+------------+--------+---------------+---------+---------+------------+------+----------+-------------+
| id | select_type | table | partitions | type | possible_keys | key | key_len | ref | rows | filtered | Extra |
+----+--------------------+---------------------+------------+--------+---------------+---------+---------+------------+------+----------+-------------+
| 1 | PRIMARY | cm | NULL | ALL | PRIMARY | NULL | NULL | NULL | 92 | 10.00 | Using where |
| 1 | PRIMARY | c | NULL | eq_ref | PRIMARY | PRIMARY | 4 | zjzc.cm.sn | 1 | 100.00 | NULL |
| 1 | PRIMARY | cp | NULL | eq_ref | PRIMARY | PRIMARY | 4 | zjzc.cm.sn | 1 | 100.00 | NULL |
| 1 | PRIMARY | cai | NULL | eq_ref | PRIMARY | PRIMARY | 4 | zjzc.cm.sn | 1 | 100.00 | NULL |
| 2 | DEPENDENT SUBQUERY | AssignClientManager | NULL | ALL | NULL | NULL | NULL | NULL | 2817 | 100.00 | Using where |
+----+--------------------+---------------------+------------+--------+---------------+---------+---------+------------+------+----------+-------------+
5 rows in set, 2 warnings (0.02 sec) DEPENDENT SUBQUERY | AssignClientManager 表示依赖子查询 所以这里是1驱动2 type ALL
全表扫描,MySQL 从头到尾扫描整张表查找行。 mysql> explain SELECT temp.* ,
-> (SELECT COUNT(sn) FROM AssignClientManager WHERE FIND_IN_SET(clientManagerSn,temp.managerSnlist)>0) clientAccount
->
->
-> FROM (
-> SELECT c.sn,cm.`parent`,c.`mobilePhone`,c.`userNick`,cp.`personName`,loadTreeByParent(cm.sn) AS managerSnlist,
-> cai.`availableBalance`,cai.`frozenWithDraw`,cai.`frozenPay`
-> FROM `Client` c
-> LEFT JOIN ClientManager cm ON c.`sn` = cm.`sn`
-> LEFT JOIN ClientPersonalInfo cp ON cp.`clientSn` = c.`sn`
-> LEFT JOIN ClientAssetInfo cai ON cai.`clientSn` = c.`sn`
-> WHERE cm.parent = 1496 ) temp
-> ;
+----+--------------------+---------------------+--------+---------------+---------+---------+------------+------+-------------+
| id | select_type | table | type | possible_keys | key | key_len | ref | rows | Extra |
+----+--------------------+---------------------+--------+---------------+---------+---------+------------+------+-------------+
| 1 | PRIMARY | <derived3> | ALL | NULL | NULL | NULL | NULL | 56 | NULL |
| 3 | DERIVED | cm | ALL | PRIMARY | NULL | NULL | NULL | 56 | Using where |
| 3 | DERIVED | c | eq_ref | PRIMARY | PRIMARY | 4 | zjzc.cm.sn | 1 | NULL |
| 3 | DERIVED | cp | eq_ref | PRIMARY | PRIMARY | 4 | zjzc.cm.sn | 1 | NULL |
| 3 | DERIVED | cai | eq_ref | PRIMARY | PRIMARY | 4 | zjzc.cm.sn | 1 | NULL |
| 2 | DEPENDENT SUBQUERY | AssignClientManager | ALL | NULL | NULL | NULL | NULL | 2126 | Using where |
+----+--------------------+---------------------+--------+---------------+---------+---------+------------+------+-------------+
6 rows in set (0.00 sec) 这里 DEPENDENT SUBQUERY | AssignClientManager 驱动表是3 id是一组数字,表示查询中执行select子句或操作表的顺序。 如果id相同,则执行顺序从上至下。 如果是子查询,id的序号会递增,id越大则优先级越高,越先会被执行。 id如果相同,则可以认为是一组,从上往下顺序执行,所有组中,id越高,优先级越高,越容易执行。 驱动表为ID=3 cm: cm,c,cp cai执行出来的结果 再去驱动2 id为3 出来的结果
就是1 <derived3> 指向3 表示 是3产生的派生表 mysql> explain SELECT COUNT(sn) FROM AssignClientManager where clientSn>5;
+----+-------------+---------------------+------------+------+---------------+------+---------+------+------+----------+-------------+
| id | select_type | table | partitions | type | possible_keys | key | key_len | ref | rows | filtered | Extra |
+----+-------------+---------------------+------------+------+---------------+------+---------+------+------+----------+-------------+
| 1 | SIMPLE | AssignClientManager | NULL | ALL | NULL | NULL | NULL | NULL | 2817 | 33.33 | Using where |
+----+-------------+---------------------+------------+------+---------------+------+---------+------+------+----------+-------------+ type ALL
全表扫描,MySQL 从头到尾扫描整张表查找行。

Mysql 执行计划分析的更多相关文章

  1. MySQL执行计划分析

    原文:MySQL执行计划分析 一. 执行计划能告诉我们什么? SQL如何使用索引 联接查询的执行顺序 查询扫描的数据函数 二. 执行计划中的内容 SQL执行计划的输出可能为多行,每一行代表对一个数据库 ...

  2. (转)mysql执行计划分析

    转自:https://www.cnblogs.com/liu-ke/p/4432774.html MySQL执行计划解读   Explain语法 EXPLAIN SELECT …… 变体: 1. EX ...

  3. mysql 执行计划分析三看, explain,profiling,optimizer_trace

    http://blog.csdn.net/xj626852095/article/details/52767963 step 1 使用explain 查看执行计划, 5.6后可以加参数 explain ...

  4. 【转】MySQL执行计划分析

    原文:http://www.cnblogs.com/wangyanhong/archive/2013/09/18/3327919.html 一.语法explain <sql语句>例如: e ...

  5. MySQL执行计划复习

    MySQL执行计划分析 Ⅰ.认识执行计划的每个字段 (root@localhost) [(none)]> desc select 1; +----+-------------+-------+- ...

  6. MySQL学习系列2--MySQL执行计划分析EXPLAIN

    原文:MySQL学习系列2--MySQL执行计划分析EXPLAIN 1.Explain语法 EXPLAIN SELECT …… 变体:   EXPLAIN EXTENDED SELECT …… 将执行 ...

  7. MySQL学习系列2--MySQL执行计划分析EXPLAIN [原创]

    1.Explain语法 EXPLAIN SELECT …… 变体:   EXPLAIN EXTENDED SELECT …… 将执行计划“反编译”成SELECT语句,运行SHOW WARNINGS 可 ...

  8. MySQL执行计划 EXPLAIN参数

    MySQL执行计划参数详解 转http://www.jianshu.com/p/7134286b3a09 MySQL数据库中,在SELECT查询语句前边加上“EXPLAIN”或者“DESC”关键字,即 ...

  9. 查看Mysql执行计划

    使用navicat查看mysql执行计划: 打开profile分析工具: 查看是否生效:show variable like ‘%profil%’; 查看进程:show processlist; 选择 ...

随机推荐

  1. 使用DiskGenius对虚拟机磁盘进行压缩

    使用虚拟机的用户是否感觉到您的虚拟磁盘文件越来越大,都快把宝贵的磁盘空间(宿主机物理硬盘)占满了呢? 有人会想到,我直接启动虚拟机,然后把里面没用的数据删除了,不就行了吗?实际测试发现,这样删除后,存 ...

  2. 关于PsCreateSystemThread函数

    研究了1天这个...MSDN说的不是很清楚NTSTATUS PsCreateSystemThread(  _Out_      PHANDLE ThreadHandle,  _In_       UL ...

  3. 彻底理解浮动float CSS浮动详解 清除浮动的方法

    我们把网页的常用的布局格式分为以下三种: 1.标准流. 所谓的标准流就是,行内元素自己单独一行,而块级元素是上下显示的. 以前我们学习的都是标准流.   注意:标准流使我们网页布局中最稳定的一种结构 ...

  4. 基于visual Studio2013解决算法导论之026二叉树

     题目 二叉树实现 解决代码及点评 #include<stdio.h> #include <malloc.h> #include <stdlib.h> typ ...

  5. 使用adb签名并安装Android程序

    首先需要准备Android SDK包,我是在windows上操作的,在PATH中配置  YOUT_SDK_PATH\android-sdk-windows\platform-tools 和  YOUT ...

  6. Android Activity Fragment 生命周期

    从开源项目中看到 这个,就情不自禁的收藏了~ https://github.com/xxv/android-lifecycle

  7. Nagiosserver端安装部署具体解释(1)

    下载地址例如以下: http://sourceforge.net/projects/nagios/files/ 具体具体下载地址:http://prdownloads.sourceforge.net/ ...

  8. 香蕉派 BPI-M1+ 双核开源硬件单板计算机

    香蕉派 BPI-M1+ 开源硬件开发板 深圳市源创通信技术有限公司公司 http://www.sinovoip.com.cn/cp_view.asp?id=562 产品介绍 Banana PI BPI ...

  9. CentOS6使用第三方yum源安装更多rpm软件包

    引言:       CentOS自带的yum源中rpm包数量有限,很多时候找不到我们需的软件包,(例如:要安装网络连接查看软件iftop,默认设置下无法使用yum命令安装),下面教大家在CentOS ...

  10. GDOI2015——已成梦

    今年GDOI(2015)在韶关北江中学(没记错的话应该是武江区)举行,感觉这五天就是一场梦,一场包含苦辣的梦. Day0 坐了一个上午的车,而且车内的空气又不好,感觉整个人都累倒下了. 到了北江之后吃 ...