首页 > 数据库技术 > 详细

MySQL Execution Plan--IN子查询包含超多值引发的查询异常1

时间:2019-04-23 14:28:39      阅读:166      评论:0      收藏:0      [点我收藏+]

=======================================================================

SQL语句:

SELECT wave_no,
SUM(IF(picking_qty IS NULL, 0, picking_qty)) AS PICKED_QTY,
SUM(IF(differ_qty IS NULL, 0, differ_qty)) AS PICKED_DIFFER_QTY,
SUM(IF(relocate_qty IS NULL, 0, relocate_qty)) AS PICKED_RELOCATE_QTY FROM picking_locate_d
WHERE  yn = 0
AND CONCAT(wave_no,‘‘) IN
(
BC76361213164811,
BC76361213164810,
BC76361213154684,
BC76361213155125
)
AND org_No= 661
AND distribute_No = 763
AND warehouse_No = 612
GROUP BY wave_no

执行计划:

+----+-------------+------------------+------------+-------+---------------+-------------+---------+------+----------+----------+-------------+
| id | select_type | table            | partitions | type  | possible_keys | key         | key_len | ref  | rows     | filtered | Extra       |
+----+-------------+------------------+------------+-------+---------------+-------------+---------+------+----------+----------+-------------+
|  1 | SIMPLE      | picking_locate_d | NULL       | index | idx_wave_no   | idx_wave_no | 153     | NULL | 37541282 |     0.01 | Using where |
+----+-------------+------------------+------------+-------+---------------+-------------+---------+------+----------+----------+-------------+

执行计划JSON:

EXPLAIN: {
  "query_block": {
    "select_id": 1,
    "cost_info": {
      "query_cost": "9549155.40"
    },
    "grouping_operation": {
      "using_filesort": false,
      "table": {
        "table_name": "picking_locate_d",
        "access_type": "index",
        "possible_keys": [
          "idx_wave_no"
        ],
        "key": "idx_wave_no",
        "used_key_parts": [
          "wave_no"
        ],
        "key_length": "153",
        "rows_examined_per_scan": 37522447,
        "rows_produced_per_join": 3752,
        "filtered": "0.01",
        "cost_info": {
          "read_cost": "9548404.95",
          "eval_cost": "750.45",
          "prefix_cost": "9549155.40",
          "data_read_per_join": "22M"
        },
        "used_columns": [
          "id",
          "wave_no",
          "picking_qty",
          "differ_qty",
          "relocate_qty",
          "org_no",
          "distribute_no",
          "warehouse_no",
          "yn"
        ],
        "attached_condition": "(
            (`report`.`picking_locate_d`.`yn` = 0) 
            and (concat(`report`.`picking_locate_d`.`wave_no`,‘‘) in (BC76361213164811,BC76361213164810,BC76361213154684,BC76361213155125)) 
            and (`report`.`picking_locate_d`.`org_no` = 661) 
            and (`report`.`picking_locate_d`.`distribute_no` = 763) 
            and (`report`.`picking_locate_d`.`warehouse_no` = 612)
        )"
      }
    }
  }
}

 

 

=======================================================================

SQL语句

SELECT wave_no,
SUM(IF(picking_qty IS NULL, 0, picking_qty)) AS PICKED_QTY,
SUM(IF(differ_qty IS NULL, 0, differ_qty)) AS PICKED_DIFFER_QTY,
SUM(IF(relocate_qty IS NULL, 0, relocate_qty)) AS PICKED_RELOCATE_QTY FROM picking_locate_d
WHERE  yn = 0
AND wave_no IN
(
BC76361213164811,
BC76361213164810,
BC76361213154684,
BC76361213155125
)
## AND org_No= 661
AND distribute_No = 763
AND warehouse_No = 612
GROUP BY wave_no;

执行计划:

+----+-------------+------------------+------------+-------+---------------+-------------+---------+------+----------+----------+-------------+
| id | select_type | table            | partitions | type  | possible_keys | key         | key_len | ref  | rows     | filtered | Extra       |
+----+-------------+------------------+------------+-------+---------------+-------------+---------+------+----------+----------+-------------+
|  1 | SIMPLE      | picking_locate_d | NULL       | index | idx_wave_no   | idx_wave_no | 153     | NULL | 37541843 |     0.01 | Using where |
+----+-------------+------------------+------------+-------+---------------+-------------+---------+------+----------+----------+-------------+

执行计划JSON

EXPLAIN: {
  "query_block": {
    "select_id": 1,
    "cost_info": {
      "query_cost": "38400.01"
    },
    "grouping_operation": {
      "using_filesort": false,
      "table": {
        "table_name": "picking_locate_d",
        "access_type": "range",
        "possible_keys": [
          "idx_wave_no"
        ],
        "key": "idx_wave_no",
        "used_key_parts": [
          "wave_no"
        ],
        "key_length": "153",
        "rows_examined_per_scan": 16000,
        "rows_produced_per_join": 15,
        "filtered": "0.10",
        "index_condition": "(
            (`report`.`picking_locate_d`.`wave_no` in (BC76361213164811,BC76361213164810,BC76361213154684,BC76361213155125)) 
            and (`report`.`picking_locate_d`.`distribute_no` = 763) 
            and (`report`.`picking_locate_d`.`warehouse_no` = 612)
        )",
        "cost_info": {
          "read_cost": "38396.81",
          "eval_cost": "3.20",
          "prefix_cost": "38400.01",
          "data_read_per_join": "98K"
        },
        "used_columns": [
          "id",
          "wave_no",
          "picking_qty",
          "differ_qty",
          "relocate_qty",
          "org_no",
          "distribute_no",
          "warehouse_no",
          "yn"
        ],
        "attached_condition": "(`report`.`picking_locate_d`.`yn` = 0)"
      }
    }
  }
}

 

=======================================================================

SQL语句:

SELECT wave_no,
SUM(IF(picking_qty IS NULL, 0, picking_qty)) AS PICKED_QTY,
SUM(IF(differ_qty IS NULL, 0, differ_qty)) AS PICKED_DIFFER_QTY,
SUM(IF(relocate_qty IS NULL, 0, relocate_qty)) AS PICKED_RELOCATE_QTY FROM picking_locate_d
WHERE  yn = 0
AND wave_no IN
(
BC76361213164811,
BC76361213164810,
BC76361213154684,
BC76361213155125
)
AND org_No= 661
AND distribute_No = 763
AND warehouse_No = 612
GROUP BY wave_no;

执行计划:

+----+-------------+------------------+------------+-------+---------------+-------------+---------+------+-------+----------+------------------------------------+
| id | select_type | table            | partitions | type  | possible_keys | key         | key_len | ref  | rows  | filtered | Extra                              |
+----+-------------+------------------+------------+-------+---------------+-------------+---------+------+-------+----------+------------------------------------+
|  1 | SIMPLE      | picking_locate_d | NULL       | range | idx_wave_no   | idx_wave_no | 153     | NULL | 16000 |     0.10 | Using index condition; Using where |
+----+-------------+------------------+------------+-------+---------------+-------------+---------+------+-------+----------+------------------------------------+

执行计划JOSN:

EXPLAIN: {
  "query_block": {
    "select_id": 1,
    "cost_info": {
      "query_cost": "9548371.80"
    },
    "grouping_operation": {
      "using_filesort": false,
      "table": {
        "table_name": "picking_locate_d",
        "access_type": "index",
        "possible_keys": [
          "idx_wave_no"
        ],
        "key": "idx_wave_no",
        "used_key_parts": [
          "wave_no"
        ],
        "key_length": "153",
        "rows_examined_per_scan": 37518548,
        "rows_produced_per_join": 1875,
        "filtered": "0.01",
        "cost_info": {
          "read_cost": "9547996.61",
          "eval_cost": "375.19",
          "prefix_cost": "9548371.80",
          "data_read_per_join": "11M"
        },
        "used_columns": [
          "id",
          "wave_no",
          "picking_qty",
          "differ_qty",
          "relocate_qty",
          "org_no",
          "distribute_no",
          "warehouse_no",
          "yn"
        ],
        "attached_condition": "(
            (`report`.`picking_locate_d`.`yn` = 0) 
            and (`report`.`picking_locate_d`.`wave_no` in (BC76361213164811,BC76361213164810,BC76361213155124,BC76361213154684,BC76361213155125)) 
            and (`report`.`picking_locate_d`.`org_no` = 661) 
            and (`report`.`picking_locate_d`.`distribute_no` = 763) 
            and (`report`.`picking_locate_d`.`warehouse_no` = 612)
        )"
      }
    }
  }
}

 

MySQL Execution Plan--IN子查询包含超多值引发的查询异常1

原文:https://www.cnblogs.com/gaogao67/p/10756018.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!