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. pycharm+QT4的helloworld

    # -*- coding: utf-8 -*- from PyQt4 import QtCore, QtGui try: _fromUtf8 = QtCore.QString.fromUtf8 exc ...

  2. POJ1985 DFS【STL__vector_的应用】

    vector     向量 相当于一个数组    在内存中分配一块连续的内存空间进行存储.支持不指定vector大小的存储.STL内部实现时,首先分配一个非常大的内存空间预备进行存储,即capacit ...

  3. (Problem 16)Power digit sum

    215 = 32768 and the sum of its digits is 3 + 2 + 7 + 6 + 8 = 26. What is the sum of the digits of th ...

  4. ASP.NET MVC 5 学习教程:添加查询

    原文 ASP.NET MVC 5 学习教程:添加查询 起飞网 ASP.NET MVC 5 学习教程目录: 添加控制器 添加视图 修改视图和布局页 控制器传递数据给视图 添加模型 创建连接字符串 通过控 ...

  5. kingso_sort - Taocode

    kingso_sort - Taocode 如何编写新sort 由于排序逻辑多种多样,kingso的排序设计成是由一个个排序对象串起的排序链条组成.排序对象之间可以任意组合(只需要改配置文件),就可以 ...

  6. Use Node.js DDP Client on Arduino Yun to Access Meteor Server

    Use Node.js DDP Client on Arduino Yun to Access Meteor Server 概述 在Arduino Yun上安装 Node.js, 并測试与 Meteo ...

  7. 算法学习笔记(三) 最短路 Dijkstra 和 Floyd 算法

    图论中一个经典问题就是求最短路.最为基础和最为经典的算法莫过于 Dijkstra 和 Floyd 算法,一个是贪心算法,一个是动态规划.这也是算法中的两大经典代表.用一个简单图在纸上一步一步演算,也是 ...

  8. phantomjs环境搭建已经运行

    1.下载phantomjs http://phantomjs.org/ 2.运行 新建phantomjs.bat,记得改目录路径 里面内容为: D:\java\phantomjs\phantomjs. ...

  9. MySQL新建用户,授权,删除用户,修改密码等命令

    首先要声明一下:一般情况下,修改MySQL密码,授权,是需要有mysql里的root权限的. 注:本操作是在WIN命令提示符下,phpMyAdmin同样适用.     用户:phplamp   用户数 ...

  10. Python 第七篇:socket编程

    一:socket基础: 1.1:Socket基础: socket起源于Unix,而Unix/Linux基本哲学之一就是“一切皆文件”,对于文件用[打开][读写][关闭]模式来操作.socket就是该模 ...