mysql5.7命中率_MySQL5.7中60万数据的表分组统计很慢

我有个表service_message大概有60万条数据,表中记录了不同设备收到消息的时间:

SHOW CREATE TABLE service_message

CREATE TABLE `service_message` (

`id` INT(11) NOT NULL AUTO_INCREMENT,

`device_id` INT(11) NOT NULL COMMENT '设备Id',

`property_id` INT(11) NOT NULL COMMENT '服务Id',

`value` TEXT NOT NULL COMMENT '数值',

`time` DATETIME NOT NULL COMMENT '数据上报时间',

PRIMARY KEY (`id`),

KEY `device_id` (`device_id`),

KEY `time` (`time`),

KEY `property_id` (`property_id`)

) ENGINE=INNODB AUTO_INCREMENT=844512 DEFAULT CHARSET=utf8

87f3ff3d5d728655b0a816a89290cbc3.png

79b577e3c078d3b3c78769512753269b.png

78bf9465e10f5fd4878a7c3d55c87092.png

fa5ff4aee6a86b7bbe7ce915915c5c43.png

我需要从中按设备id统计最新的时间值。我的sql语句是这样写的:

SELECT device_id,MAX(`time`) AS`time` FROM service_message GROUP BY device_id

b2b1dd5fafc8d7952458d76994ee943f.png

查询时间要3~4秒,很慢。

我用explain看了执行计划,但是我是小白,看不懂:

def8f7e4a44c417eb0fb137dc4621cd7.png

所以。我的问题是,有没有优化的方法?

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值