【发布时间】:2015-06-30 22:42:09
【问题描述】:
我有一个 PHP 脚本提取一个静态的 JSON 文件,每 10 秒更新一次。它包含有关发生的一些事件的详细信息,它只是添加到 JSON 文件的顶部。然后我将它们插入到 MySQL 数据库中。
因为每次拉取文件时我都必须拉取每个事件,所以我只会插入新事件。最简单的方法是在数据库中搜索事件(主键 不 相同),但我每天都在谈论大约 4000 个事件,我不希望那么多查询只是为了看看是否存在。
我知道INSERT IGNORE,但看起来它只使用PRIMARY_KEY 来执行此操作。
我可以做些什么(最好是轻松地)来防止两个键上的重复?
例子:
我有一张表events,其中包含以下列:
- ID(无关紧要,真的)
- event_id(我需要从源存储)
- action_id(多个action_id属于一个event_id)
- 时间戳
- 随便...
我的数据是我的 JSON 在第一次拉取时出现,如下所示:
event_id|action_id|...
1 | 1
1 | 2
1 | 3
2 | 1
2 | 2
2 | 3
那么下一个pull是这样的:
event_id|action_id|...
1 | 1
1 | 2
1 | 3
1** | 4**
1** | 5**
2 | 1
2 | 2
2 | 3
2** | 4**
我只希望插入标有星号的行,而忽略其他行。请记住,primary_key 列 id 完全在此表中,我只是将其用于无处不在。
我可以使用什么命令来“插入”我提取的每个事件,但只添加那些不通过 event_id 和 action_id 两列重复的事件。
谢谢。
【问题讨论】: