mysql 找出最新时间的一条数据

2020-08-25 10:34:15 浏览数 (1)

今天遇到一个需求,需要找出最新的一条数据。然后我的Sql是这样的

代码语言:javascript复制
  SELECT
            pm25,
            pm10,
            so2,
            no2,
            co,
            o3,
        MAX( insTime ) AS insTime
        FROM
            tb_weather_city_hour
        WHERE
            city = 'xxx'

但是看了一下表,有10w多条数据了,如果在10w条数据中用MAX函数应该很会慢,而且数据越来越多,有可能100w条。加索引的如果数据量太大也会慢吧。我想到解决办法是加上一个条件startTime和endTime 就是当日期的开始 也就是00:00:00~23:59:59 这个时间范围的数据就是最新的数据了。这样在MAX也不会很慢,如果考虑到可能当天内没有数据,开始时间可以向前推几天。

代码语言:javascript复制
 AND insTime BETWEEN #{startTime} AND  #{endTime}

另外也可以不使用MAX,可以使用

代码语言:javascript复制
ORDER BY insTime Limit 1

这样也可以找出最新的一条

这个只是个人的解决办法,如果好的解决办法可以传授一下。

0 人点赞