風雲 (ID: 3)
头衔:论坛版主
等级:天使
积分:1486
发帖:67 篇
来自:保密
注册:2022/3/30 15:28:53
造访:2024/7/24 16:16:30
发帖:67 篇
来自:保密
注册:2022/3/30 15:28:53
造访:2024/7/24 16:16:30
[ 第 1 楼 ]
回复
![](res/bbs/icon/replynow.gif)
两者都是通过主键或唯一键冲突机制,实现的效果几乎一致,但是原理不一致。
replace into 是先删除存在的主键或唯一键记录,然后再全部插入,会导致自增ID 越来越大。
insert into ... on duplicate key update col1=val1 会尝试插入,因此,插入过程中同样会造成自增ID 变大,如果插入遇到冲突,则更新当前行指定列。
看起来,还是 replace into 比较省事,不用写两次列定义。
replace into 是先删除存在的主键或唯一键记录,然后再全部插入,会导致自增ID 越来越大。
insert into ... on duplicate key update col1=val1 会尝试插入,因此,插入过程中同样会造成自增ID 变大,如果插入遇到冲突,则更新当前行指定列。
看起来,还是 replace into 比较省事,不用写两次列定义。
![](res/bbs/icon/posttime.gif)
![](res/bbs/icon/ip.gif)