文档章节

MySQL之 INSERT ... ON DUPLICATE KEY UPDATE

谢思华
 谢思华
发布于 2015/08/28 10:45
字数 301
阅读 320
收藏 8

一、insert or update需求

      需求:如果test_table中存在记录则update,不存在则insert。

二、老做法:3条sql     

select * from test_table where id = 1;   //查询表中是否已有记录
insert into test_table (id,name) values(1,'may');   //记录不存在,执行insert
update test_table set name = 'may' where id = 1;  //记录存在,执行update

      先查询一次,判断记录是否存在;如果不存在,则插入记录;如果存在,则更新记录。在数据量不大的情况下,不存在效率问题,可用。

      但是,数据量一旦很大,效率则会很低,且会出现数据并发的问题,例如:数据重复,甚至跑到内存溢出。等等。而使用 “on duplicate key update"在数据量大的情况下,效率明显高很多。只有一个sql,直接在数据库层做处理,少了很多在业务层的判断。

三、使用 on duplicate key update:1条sql

    使用 on duplicate key update,1条sql可以搞定上面3条sql所做的事情,且效率更高。       

insert into test_table (id,name) values(1,'may') 
on duplicate key update name = values(name);

【前提:on duplicate key update 的使用必须有一个 唯一索引 或者 主键】

© 著作权归作者所有

谢思华
粉丝 77
博文 221
码字总数 152858
作品 0
广州
程序员
私信 提问
mysql on duplicate update 语法

mysql "ON DUPLICATE KEY UPDATE" 语法 如果在INSERT语句末尾指定了ON DUPLICATE KEY UPDATE,并且插入行后会导致在一个UNIQUE索引或PRIMARY KEY中出现重复值,则在出现重复值的行执行UPDAT...

mrliuze
2016/06/30
137
0
本文主要总结关于mysql的优化(将会持续更新)

ON DUPLICATE KEY UPDATE 事件背景 在阅读公司原来代码的过程中,我发现了这样一段代码: 在语义的理解上,应当是索引冲突则更新原有索引数据。经过查阅资料,我总结如下: 假设业务上我们需要...

o0无忧亦无怖
2018/08/14
120
0
MYSQL无重复插入数据更新语法&sql一句话使insert时若主键重复则更新

我来说两句 收藏 我要投稿 MYSQL无重复插入数据更新语法&sql一句话使insert时若主键重复则更新 如果你指定了ON DUPLICATE KEY UPDATE命令语句,那么在唯一索引或者主索引的作用下将不插入与数...

碧海潮生曲
2013/03/02
439
0
mysql存在则更新,不存在则插入

INSERT INTO ON DUPLICATE KEY UPDATE 与 REPLACE INTO,两个命令可以处理重复键值问题,在实际上它之间有什么区别呢? 前提条件是这个表必须有一个唯一索引或主键。 unique 1、REPLACE发现重...

LCZ777
2015/09/22
5.6K
0
mysql 存在该记录则更新,不存在则插入记录的sql

INSERT table (autoid, autoname) values (1, ‘yourname') ON DUPLICATE KEY UPDATE auto_name='yourname' ON DUPLICATE KEY UPDATE的使用 如果您指定了ON DUPLICATE KEY UPDATE,并且插入行......

techsboy
2014/04/25
7
0

没有更多内容

加载失败,请刷新页面

加载更多

Java 8 Optional:优雅地避免 NPE

本篇文章将详细介绍 Optional 类,以及如何用它消除代码中的 null 检查。在开始之前首先来看下什么是 NPE,以及在 Java 8 之前是如何处理 NPE 问题的。 空指针异常(NullPointException,简称...

武培轩
20分钟前
1
0
CountDownLatch实现的并发框架

目录结构 package com.**.**.base.support.executor;import lombok.NoArgsConstructor;import org.apache.commons.logging.Log;import org.apache.commons.logging.LogFactory;imp......

MR_TE
21分钟前
7
0
学习记录(day06-事件、按键修饰符、计算属性)

[TOC] 1.1 事件修饰符/按键修饰符 vue 通过事件修饰符对dom事件细节进行控制 <标签 @事件.修饰符="函数"></标签>.prevent ---阻止浏览器默认行为.stop ---阻止浏览器事件冒泡.e...

庭前云落
40分钟前
5
0
006-Sigle-基于blockstack去中心化博客

本篇文章主要讲解有关基于Blockstack的Sigle是一个去中心化的博客项目; 官网地址:https://www.sigle.io/ Github地址:https://github.com/pradel/sigle 页面展示: 介绍: A beautiful de...

Riverzhou
48分钟前
17
0
驰骋工作流引擎开发平台属性功能的隐藏显示介绍

关键字: 工作流程管理系统 工作流引擎 asp.net工作流引擎 java工作流引擎. 表单引擎 工作流功能说明 工作流设计 工作流快速开发平台 业务流程管理 bpm工作流系统 java工作流主流框架 自定义...

孟娟
49分钟前
14
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部