我有一个PHP脚本来提取静态的JSON文件并每10秒更新一次。它包含有关发生的一些事件的详细信息,它只是添加到JSON文件的顶部。然后我将它们插入MySQL数据库。
因为每次拉文件时我都要拉每个事件,所以我只会插入新事件。简单的方法是在数据库中搜索事件(主键不相同),但我每天都在讨论~4000个事件,我不希望那么多查询看它是否存在。
我知道INSERT IGNORE
,但看起来它只使用PRIMARY_KEY
来执行此操作。
我可以做什么(最好是很容易)以防止两个键上的重复?
示例:
我有一个表events
,其中包含以下列:
我的数据就是我的JSON出现在第一个拉出来的那样:
event_id|action_id|...
1 | 1
1 | 2
1 | 3
2 | 1
2 | 2
2 | 3
然后下一步是:
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
完全在此表中,我只是将其用于无处不在。
我可以使用什么命令来" INSERT"我提取的每个事件,但只添加那些不会通过两列event_id
和action_id
重复的事件。
感谢。
答案 0 :(得分:3)
为两列创建唯一索引。
CREATE
UNIQUE INDEX event_action
ON tablename (event_id, action_id)