所以,我有一个大约有 150 万行的表,看起来有点像这样:
name | time | data1 | data2
--------------------------------------
93-15 | 1337348782 | 11 | 60.791
92-02 | 1337348783 | 11 | 62.584
92-02 | 1337348056 | 11 | 63.281
93-15 | 1337348068 | 8 | 65.849
92-02 | 1337348117 | 11 | 63.271
93-15 | 1337348129 | 8 | 65.849
92-02 | 1337348176 | 10 | 63.258
93-15 | 1337348188 | 8 | 65.849
92-02 | 1337348238 | 10 | 63.245
93-15 | 1337348248 | 8 | 65.849
...这些对应于需要监控的事物的历史状态更新。现在,我想做的是找到每个单元的当前状态。
在 stackoverflow 上找到类似的问题并不难,并且从结果中推断出来,我想出了这个查询:
SELECT * FROM vehicles v
JOIN ( SELECT MAX(time) as max, name
FROM vehicles
GROUP BY name)
m_v
ON (v.time = m_v.max AND v.name = m_v.name);
但是看到我大约有 150 万行(并且还在增加),是否有不同的方法可以实现更快的查询?