从<derivedN>表中选择的MySQL EXPLAIN的“行”字段的含义?

时间:2019-08-09 03:43:02

标签: mysql

在MySQL 5.6中: 表“ magnetInfo”包含来自不同设备的基于时间的数据。下面的SQL语句为同一设备的最后一个日期选择每个设备的min sensor1数据。

explain select m._sysID, Date(m._datetime), min(sensor1)
from magnetInfo m
inner join
(SELECT _sysID, Date(max(_datetime)) as d FROM magnetInfo where _sysID in ("sysID_01", "sysID_02") group by _sysID) t 
on m._sysID = t._sysID and Date(m._datetime) = t.d
group by m._sysID order by NULL;

id  select_type table   type    possible_keys   key     key_len ref  rows   Extra
1   PRIMARY  <derived2> ALL     NULL            NULL    NULL    NULL 2644   Using temporary
1   PRIMARY      m      ref  magnetInfoIndex  magnetInfoIndex   309 t._sysID    1   Using index condition
2   DERIVED  magnetInfo range magnetInfoIndex magnetInfoIndex   302 NULL    2644    Using where; Using index for group-by

DERIVED select的结果只有两行,但是从“ derived2”中进行选择的“行”具有与DERIVED select的值相同的值(2644),这就是为什么? 我尝试过其他类似的SQL,它们始终具有相同的值。顺便说一下,关于优化上面的SQL有什么建议吗?

0 个答案:

没有答案