我将对各种rpc调用的响应存储在具有以下字段的mysql表中:
Table: rpc_responses timestamp (date) method (varchar) id (varchar) response (mediumtext) PRIMARY KEY(timestamp,method,id)
为method和的所有现有组合选择最新响应的最佳方法是什么id?
method
id
对于每个日期,对于给定的方法/ ID,只能有一个响应。
并非所有呼叫组合在给定日期都必须存在。
有数十种方法,数千个ID和至少365个不同的日期
样本数据:
timestamp method id response 2009-01-10 getThud 16 "....." 2009-01-10 getFoo 12 "....." 2009-01-10 getBar 12 "....." 2009-01-11 getFoo 12 "....." 2009-01-11 getBar 16 "....."
所需结果:
2009-01-10 getThud 16 "....." 2009-01-10 getBar 12 "....." 2009-01-11 getFoo 12 "....." 2009-01-11 getBar 16 "....."
(我不认为这是同一个问题-它不会给我最新的信息response)
response
自我回答,但是随着表的增长,我不确定这是否将是一个足够有效的解决方案:
SELECT timestamp,method,id,response FROM rpc_responses INNER JOIN (SELECT max(timestamp),method,id FROM rpc_responses GROUP BY method,id) latest USING (timestamp,method,id);