这个问题与我之前的问题非常相关:MySQL, return all results within X last hours although with additional significant constraint:
现在我有两张表,一张用于测量,一张用于部分测量的分类结果。
测量结果不断到达,结果在新测量分类后不断添加。
结果的存储顺序不一定与测量的到达顺序和存储顺序相同!
我只想展示最后的结果。最后,我的意思是将最后一个可用结果的最大时间(时间是测量结构的一部分)称为 Y和 X 秒的范围,并将测量结果与 Y 和 YX 范围内的可用结果一起呈现.
以下是2个表的结构:
事件表:
CREATE TABLE `event_data` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`Feature` char(256) NOT NULL,
`UnixTimeStamp` int(10) unsigned NOT NULL,
`Value` double NOT NULL,
KEY `ix_filter` (`Feature`),
KEY `ix_time` (`UnixTimeStamp`),
KEY `id_index` (`id`)
) ENGINE=MyISAM
分类结果表:
CREATE TABLE `event_results` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`level` enum('NORMAL','SUSPICIOUS') DEFAULT NULL,
`score` double DEFAULT NULL,
`eventId` int(11) DEFAULT NULL,
PRIMARY KEY (`id`),
KEY `eventId_index` (`eventId`)
) ENGINE=MyISAM
我无法首先查询上次测量时间戳,因为我想呈现当前有结果的测量,并且由于测量不断到达,结果可能仍然不可用。
因此,我想到了使用
event_results.eventId=event_data.id
and 加入两个表,而不是选择最大时间event_data.UnixTimeStamp as maxTime
,在我拥有 maxTime 之后,我需要再次执行相同的操作(加入 2 个表)并在 where 子句中添加一个条件
WHERE event_data.UnixTimeStamp >= maxTime + INTERVAL -X SECOND
执行 2 个连接似乎效率不高,只是为了实现我的要求,你有更多的 ef