要插入的数据  与表中记录数据惟一索引或主键中产生重复值,那么就会发生旧行更新

弊端:造成主键自增不连续。适合数据量不大的表。

ON DUPLICATE KEY UPDATE后面的条件

eg有如下表,仅主键存在UK(唯一)属性:

select * from Student

id  name    age
1 jack 20
2 rose 21

insert into Student ( id,name) values (1,'jack') ON DUPLICATE KEY UPDATE name = 'tom',age=40;

select * from Student;

id  name    age
1 tom 40
2 rose 21

end

=======================================================================

个人记录日记:

千万条数据量,根据UK进行更新或插入,耗时较久,于是思考优化的思路:

1、在UK字段建立索引(查明ON DUPLICATE KEY UPDATE是否用的到索引)

2、拆成根据UK字段查询,根据查询结果判断后再进行插入和更新操作。这里耗时最大的操作是查询操作,所以查询仍需在UK字段建立索引。

以及多线程下同步以上原子操作。

过程中好奇sql的执行过程,查了一下资料:

https://www.cnblogs.com/yuyue2014/p/3826941.html

最新文章

  1. mySql 远程连接(is not allowed to connect to this MySQL server)
  2. 在MFC中使用GDI+的一般方法,以VC6.0编译器为例
  3. tooltip提示插件
  4. WEB安全--CSRF剖析
  5. ACdream 1104 瑶瑶想找回文串(SplayTree + Hash + 二分)
  6. SharePoint 2013 开发——工作流架构
  7. PostgreSQL数据的导出导入
  8. poj 2408 Apple Tree
  9. 配置Windows 2008 R2 防火墙允许远程访问SQL Server 2008 R2 更改端口 连接字符串 IP+逗号+端口号
  10. ajax+php如何获取部分请求的信息显示在对应的div中
  11. ZOJ 3829 Known Notation 乱搞
  12. 文件系统的几种类型:ext3, swap, RAID, LVM
  13. LeetCode之“散列表”:Two Sum && 3Sum && 3Sum Closest && 4Sum
  14. Shell中的算数运算
  15. python mac 环境配置
  16. Mac gitk安装与优化
  17. 【LOJ#6278】数列分块2
  18. Linux命令中,$、#、@、0、1、2、*、?的作用
  19. cubic与spline插值点处的区别
  20. linux查看进程是否存在,不存在则重启

热门文章

  1. 3 WCF一些基础铺垫
  2. 数值范围选择控件RangeSlider
  3. 随机森林与 GBDT
  4. Andrdoid适当的执行行为拦截的应用----从底部C截距
  5. 浅谈C/C++堆栈指引——C/C++堆栈很强大(绝美)
  6. 记一次虚拟化环境下Windows IO性能的解析
  7. C/C++使用openssl进行摘要和加密解密(md5, sha256, des, rsa)
  8. Substring详解
  9. WPF用DirectSound播放声音
  10. Android零基础入门第76节:Activity数据保存和横竖屏切换