返回信息流1.第一次插入了一批数据,
2.以后会经常往这个表里面插入数据,遵循如下原则:
a。如果要插入的和表里面的字段全部一样的话,就不插入。
b。如果和表里面的某个字段(非主键)一样的话,就更新该条记录。
c。如果新数据里面的该字段在库里面没有的话,就直接插入。
如果数据量比较大话,如何能提高效率呢?
这是一条镜像帖。来源:北邮人论坛 / www-technology / #27899同步于 2014/10/23
该镜像源已超过 30 天没有更新,可能在源站已被删除。
WWWTechnology机器人发帖
PHP如何提高mysql插入效率
youziboy
2014/10/23镜像同步5 回复
订阅后,新回复会通过你的通知中心匿名送达。
5 条回复
如果一组数据,只有主键相同,那么这组数据走的是哪个分支?
如果一组数据,数据里面的值在库里的多条记录都有。比如数据是1 2,库里面有1 3 和 4 2,那么是都更新吗?
假设你的数据库是自增主键,也就是要存的数据里面不包含主键,那么,下面的情况是否是允许的?
如果要插入的数据是 1 2
现在库里面有 1 3
于是更新1 3为 1 2
然后来了数据 3 2,于是更新1 2 到 3 2
然后来了数据 3 4,于是更新3 2 到 3 4
然后又来了数据1 2, 于是只能插入新数据 1 2
再说一下,假如:
表test结构是
ID a1 a2 a3 4个字段
ps: ID为表的key, auto_increment
文本文件结构是:
a1_1 a2_1 a3_1
总的来说:
就是新数据(从文本文件来), 如果a1_1在test表的a1字段中能找到的话,则update表test.a2, test.a3字段至文本文件对应的字段a2_1 和 a3_1,如果找不到的话,就在test中新插入一条。
比如:
第一次插入数据:
1 http://www.sina.com 2 3 4
第二次有数据来了:
文本文件a1_1,a2_1 ,a3_1相应的字段是:
http://www.sina.com 2 4 5
则更新上面那条数据为
1 http://www.sina.com 2 4 5
如果第三次数据来了:
a1_1,a2_1 ,a3_1相应的字段是:
http://www.sohu.com 2 3 4
则插入新数据:
2 http://www.sohu.com 2 3 4
尝试使用insert on duplicate key update 语法,但是不成功。
【 在 weiyitheonly 的大作中提到: 】
: 如果一组数据,只有主键相同,那么这组数据走的是哪个分支?
: 如果一组数据,数据里面的值在库里的多条记录都有。比如数据是1 2,库里面有1 3 和 4 2,那么是都更新吗?
: 假设你的数据库是自增主键,也就是要存的数据里面不包含主键,那么,下面的情况是否是允许的?
: ...................
1. 主键是自动生成的ID,所以不会重复。
2. 比如数据是1 2,库里面有1 3 和 4 2,那么是都更新吗?
1 3需要更新为1 2, 4 2不用更新。
【 在 weiyitheonly 的大作中提到: 】
: 如果一组数据,只有主键相同,那么这组数据走的是哪个分支?
: 如果一组数据,数据里面的值在库里的多条记录都有。比如数据是1 2,库里面有1 3 和 4 2,那么是都更新吗?
: 假设你的数据库是自增主键,也就是要存的数据里面不包含主键,那么,下面的情况是否是允许的?
: ...................
我最后用的还是 insert on duplicate key update,成功了。
【 在 changzhu 的大作中提到: 】
: 看描述,insert on duplicate key update 是重复数据怎么处理
: 你的需求的话,用replace into试试