有张表50W条数据,今天写了个JOB每隔10秒对其进行分组查询并获取每组的第一条数据。
select ( select KVARH_Total from e_monitorhours where MobusId=a.MobusId order by Id DESC limit 1 ) as KVARH_Total from e_monitorhours as a where 1=1 and MobusId not in (51,52,53) group by a.MobusId
数据量小的时候还没问题,但是当达到几十万的时候,CPU100%。当然一开始是不知道的。
后来在网上搜索说执行:
show full processlist
可以看到性能差的SQL语句,然后在info字段里面果断找到。
因为MobusId没加索引,只要给其加上索引即可。