只有更新值增加的表才会出现问题。
想象一下,你有一个像这样的结构数据库,它代表了按频道和设备划分的所有节目峰值观众价值。
每隔5分钟,您就会将新数据推送到此表中,
目标是仅更新程序的峰值视图增加的值
例如增加" event_peak_views"来自一个独特的" platform_id和channel_epg_id AND event_start"
我目前的做法是每隔5分钟快速插入新值,然后为任何给定程序选择最低峰值并删除它们。
必须有一个更好的方法,因为数据集相当大,数百万行,任何人都有比我自己的劣质方法更好的建议吗?
`entry_id` INT(11) NOT NULL AUTO_INCREMENT,
`platform_id` INT(11) NOT NULL,
`channel_epg_id` INT(11) NOT NULL,
`event_start` DATETIME NOT NULL,
`event_peak_views` INT(11) NOT NULL,
`last_update` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
PRIMARY KEY (`entry_id`),
INDEX `platform_id` (`platform_id`),
INDEX `channel_epg_id` (`channel_epg_id`),
INDEX `event_start` (`event_start`)
DELETE victim
FROM
Livescrape_data_live_historical_events as victim,
Livescrape_data_live_historical_events as comparsion
WHERE
victim.entry_id<>comparsion.entry_id
AND victim.event_start=comparsion.event_start
AND victim.platform_id=comparsion.platform_id
AND victim.channel_epg_id=comparsion.channel_epg_id
AND (
(victim.event_peak_views < comparsion.event_peak_views)
OR (
victim.event_peak_views = comparsion.event_peak_views
AND victim.entry_id > comparsion.entry_id
)
);