那么,怎样处理好?1.一条条查询,存在就更新,不存在就插入?2.先全删除,直接插入?
更新的字段有几个,且无索引。
请参考这个链接。
UPSERT语义很多数据库都支持。比如SQL Server的merge,或者Postgresql的insert on conflict update。
merge
insert on conflict update
可以把这些丢到队列,然后跑队列,执行失败记得打日志。
这两种方式感觉都可以,具体效率问题得看你的数据具体情况了,如果想知道具体那种方法好,不如直接利用真实数据做一下测试,分别用两种方法看看sql执行的时间。
INSERT ... ON DUPLICATE KEY UPDATE
INSERT INTO table (a,b,c) VALUES (1,2,3) ON DUPLICATE KEY UPDATE c=c+1;
2 回答847 阅读✓ 已解决
1 回答902 阅读✓ 已解决
1 回答884 阅读✓ 已解决
1 回答734 阅读✓ 已解决
2 回答999 阅读
1 回答889 阅读
1 回答1.1k 阅读
864 阅读
1 回答3.9k 阅读✓ 已解决
1 回答2.4k 阅读
5.8k 阅读
1 回答2.2k 阅读✓ 已解决
请参考这个链接。
UPSERT语义很多数据库都支持。比如SQL Server的
merge
,或者Postgresql的insert on conflict update
。