您好,信息如下:
查询sql:
select a.factory_code, a.project_name, a.site_name, a.fsn, max(a.op_time)
from workstation_pass_info a, (select factory_code, project_name site_name, fsn, max(op_time) op_time
from workstation_pass_info
where op_time >= ‘2019-12-26’ and op_time < ‘2019-12-27’ and factory_code = ‘101077’
and site_name = ‘SMT_SNO_OUTPUT’
and times >= 0
group by factory_code, project_name, site_name, fsn) b
where a.fsn = b.fsn and a.op_time < b.op_time and a.site_name = ‘SMT_SNO_INPUT’ and a.times >= 0
group by a.factory_code, a.project_name, a.site_name, a.fsn;
explain结果:
| id | count | task | operator info |
±-----------------------------------±------------±-----±---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| Projection_12 | 74733.95 | root | supply_factory.a.factory_code, supply_factory.a.project_name, supply_factory.a.site_name, supply_factory.a.fsn, 8_col_0 |
| └─HashAgg_15 | 74733.95 | root | group by:supply_factory.a.factory_code, supply_factory.a.fsn, supply_factory.a.project_name, supply_factory.a.site_name, funcs:max(supply_factory.a.op_time), firstrow(supply_factory.a.factory_code), firstrow(supply_factory.a.project_name), firstrow(supply_factory.a.fsn), firstrow(supply_factory.a.site_name) |
| └─IndexJoin_21 | 74733.95 | root | inner join, inner:IndexLookUp_20, outer key:supply_factory.workstation_pass_info.fsn, inner key:supply_factory.a.fsn, other cond:lt(supply_factory.a.op_time, op_time) |
| ├─Selection_24 | 1797.33 | root | not(isnull(4_col_0)) |
| │ └─HashAgg_47 | 2246.67 | root | group by:col_2, col_3, col_4, col_5, funcs:max(col_0), firstrow(col_1) |
| │ └─IndexLookUp_48 | 2246.67 | root | |
| │ ├─Selection_45 | 97218.69 | cop | eq(supply_factory.workstation_pass_info.factory_code, “101077”), eq(supply_factory.workstation_pass_info.site_name, “SMT_SNO_OUTPUT”) |
| │ │ └─IndexScan_43 | 19433134.97 | cop | table:workstation_pass_info, index:op_time, factory_code, project_name, site_name, range:[2019-12-26 00:00:00,2019-12-27 00:00:00), keep order:false |
| │ └─HashAgg_26 | 2246.67 | cop | group by:supply_factory.workstation_pass_info.factory_code, supply_factory.workstation_pass_info.fsn, supply_factory.workstation_pass_info.project_name, supply_factory.workstation_pass_info.site_name, funcs:max(supply_factory.workstation_pass_info.op_time), firstrow(supply_factory.workstation_pass_info.fsn) |
| │ └─Selection_46 | 93417.44 | cop | ge(supply_factory.workstation_pass_info.times, 0), not(isnull(supply_factory.workstation_pass_info.fsn)) |
| │ └─TableScan_44 | 97218.69 | cop | table:workstation_pass_info, keep order:false, stats:pseudo |
| └─IndexLookUp_20 | 0.91 | root | |
| ├─Selection_18 | 44.85 | cop | not(isnull(supply_factory.a.fsn)) |
| │ └─IndexScan_16 | 44.85 | cop | table:a, index:fsn, range: decided by [eq(supply_factory.a.fsn, supply_factory.workstation_pass_info.fsn)], keep order:false |
| └─Selection_19 | 0.91 | cop | eq(supply_factory.a.site_name, “SMT_SNO_INPUT”), ge(supply_factory.a.times, 0), not(isnull(supply_factory.a.op_time)) |
| └─TableScan_17 | 44.85 | cop | table:workstation_pass_info, keep order:false, stats:pseudo |
±-----------------------------------±------------±-----±---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
表结构:
----------------------±-------------±-----±-----±------------------±------+
| Field | Type | Null | Key | Default | Extra |
±---------------------±-------------±-----±-----±------------------±------+
| id | bigint(20) | NO | PRI | NULL | |
| work_order | varchar(50) | YES | | NULL | |
| line_id | varchar(30) | YES | | NULL | |
| site_id | varchar(100) | YES | | NULL | |
| factory_code | varchar(50) | YES | MUL | NULL | |
| project_name | varchar(80) | YES | | NULL | |
| fsn | varchar(50) | YES | MUL | NULL | |
| result | varchar(1) | YES | | NULL | |
| times | smallint(6) | YES | | NULL | |
| machine_id | varchar(100) | YES | | NULL | |
| machine_name | varchar(100) | YES | | NULL | |
| imei2 | varchar(17) | YES | MUL | NULL | |
| imei1 | varchar(17) | YES | MUL | NULL | |
| operation | varchar(50) | YES | | NULL | |
| site_name | varchar(30) | YES | | NULL | |
| operator | varchar(100) | YES | | NULL | |
| save_time | timestamp | YES | | NULL | |
| create_time | timestamp | YES | MUL | CURRENT_TIMESTAMP | |
| update_time | timestamp | YES | | CURRENT_TIMESTAMP | |
| passworkstation_code | varchar(50) | YES | | NULL | |
| op_time | timestamp | YES | MUL | NULL | |
| idx | varchar(100) | NO | | NULL | |
| computer_name | varchar(100) | YES | | NULL | |
| pcb_fix | int(11) | YES | | NULL | |
±---------------------±-------------±-----±-----±------------------±------+
现有索引情况:
| Table | Non_unique | Key_name | Seq_in_index | Column_name | Collation | Cardinality | Sub_part | Packed | Null | Index_type | Comment | Index_comment |
±----------------------±-----------±---------------------------±-------------±-------------±----------±------------±---------±-------±-----±-----------±--------±--------------+
| workstation_pass_info | 0 | PRIMARY | 1 | id | A | 0 | NULL | NULL | | BTREE | | |
| workstation_pass_info | 1 | index_imei1 | 1 | imei1 | A | 0 | NULL | NULL | YES | BTREE | | |
| workstation_pass_info | 1 | index_create_time | 1 | create_time | A | 0 | NULL | NULL | YES | BTREE | | |
| workstation_pass_info | 1 | index_imei2 | 1 | imei2 | A | 0 | NULL | NULL | YES | BTREE | | |
| workstation_pass_info | 1 | index_fsn | 1 | fsn | A | 0 | NULL | NULL | YES | BTREE | | |
| workstation_pass_info | 1 | index_code_project_op | 1 | factory_code | A | 0 | NULL | NULL | YES | BTREE | | |
| workstation_pass_info | 1 | index_code_project_op | 2 | project_name | A | 0 | NULL | NULL | YES | BTREE | | |
| workstation_pass_info | 1 | index_code_project_op | 3 | op_time | A | 0 | NULL | NULL | YES | BTREE | | |
| workstation_pass_info | 1 | index_code_project_op_site | 1 | factory_code | A | 0 | NULL | NULL | YES | BTREE | | |
| workstation_pass_info | 1 | index_code_project_op_site | 2 | project_name | A | 0 | NULL | NULL | YES | BTREE | | |
| workstation_pass_info | 1 | index_code_project_op_site | 3 | op_time | A | 0 | NULL | NULL | YES | BTREE | | |
| workstation_pass_info | 1 | index_code_project_op_site | 4 | site_name | A | 0 | NULL | NULL | YES | BTREE | | |
| workstation_pass_info | 1 | index_op_code_project_site | 1 | op_time | A | 0 | NULL | NULL | YES | BTREE | | |
| workstation_pass_info | 1 | index_op_code_project_site | 2 | factory_code | A | 0 | NULL | NULL | YES | BTREE | | |
| workstation_pass_info | 1 | index_op_code_project_site | 3 | project_name | A | 0 | NULL | NULL | YES | BTREE | | |
| workstation_pass_info | 1 | index_op_code_project_site | 4 | site_name | A | 0 | NULL | NULL | YES | BTREE | | |
±----------------------±-----------±---------------------------±-------------±-------------±----------±------------±---------±-------±-----±-----------±--------±--------------+