今天遇到一個(gè)需求狈究,需要找出最新的一條數(shù)據(jù)。然后我的Sql是這樣的
SELECT
pm25,
pm10,
so2,
no2,
co,
o3,
MAX( insTime ) AS insTime
FROM
tb_weather_city_hour
WHERE
city = 'xxx'
但是看了一下表盏求,有10w多條數(shù)據(jù)了抖锥,如果在10w條數(shù)據(jù)中用MAX函數(shù)應(yīng)該很會(huì)慢,而且數(shù)據(jù)越來(lái)越多风喇,有可能100w條宁改。加索引的如果數(shù)據(jù)量太大也會(huì)慢吧。我想到解決辦法是加上一個(gè)條件startTime和endTime 就是當(dāng)日期的開(kāi)始
也就是00:00:00~23:59:59 這個(gè)時(shí)間范圍的數(shù)據(jù)就是最新的數(shù)據(jù)了魂莫。這樣在MAX也不會(huì)很慢还蹲,如果考慮到可能當(dāng)天內(nèi)沒(méi)有數(shù)據(jù),開(kāi)始時(shí)間可以向前推幾天。
AND insTime BETWEEN #{startTime} AND #{endTime}
另外也可以不使用MAX谜喊,可以使用
ORDER BY insTime Limit 1
這樣也可以找出最新的一條
這個(gè)只是個(gè)人的解決辦法潭兽,如果好的解決辦法可以傳授一下。