博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
mysql性能优化总结(MySql避免重复插入记录的几种方法)
阅读量:6149 次
发布时间:2019-06-21

本文共 899 字,大约阅读时间需要 2 分钟。

如果我们创建了(area, age,salary)的复合索引,那么其实相当于创建了: (area,age,salary),(area,age)、(area)三个索引,这被称为最佳左前缀 特性。因此我们在创建复合索引时应该将最常用作限制条件的列放在最左边,依次递减。 例: select * from test where area='11' select * from test where area='11' and age=1 select * from test where area='11' and age=1 and salary=2.0 以上有索引 select * from test where age=11 select * from test where  age=1 and salary=2.0 以上无索引 ----------------------------------- 如果在查询中需要匹配多个字段的条件,可以把这几个字段做个,效率要比在每个字段上加索引高多了

我们实现这个一个需求:如果表中记录存在我们就更新,我们表中记录不存在我们就插入

我们可以给表中的某个字段添加一个唯一索引

然后使用replace into 来实现

返回值:

REPLACE语句会返回一个数,来指示受影响的行的数目。该数是被删除和被插入的行数的和
受影响的行数可以容易地确定是否REPLACE只添加了一行,或者是否REPLACE也替换了其它行:检查该数是否为1(添加)或更大(替换)。

示例:

# eg:(phone字段为唯一索引)

 

复制代码代码如下:
REPLACE INTO `table_name` (`email`, `phone`, `user_id`) VALUES ('test569', '99999', '123');

另外,在 SQL Server 中可以这样处理:

https://www.cnblogs.com/printN/p/7233645.html

转载于:https://www.cnblogs.com/kebibuluan/p/7905185.html

你可能感兴趣的文章
aspnetpager调用存储过程方法
查看>>
如何优化代码中大量的if/else,switch/case?
查看>>
【轻松一刻】Java制作字符动画
查看>>
解决iOS10的Safari下Meta设置user-scalable=no无效的方法
查看>>
js-利用插件qrcode.min.js,前端实时生成二维码
查看>>
vue 表单提交
查看>>
行业动态
查看>>
简易相应式布局。
查看>>
用js使得输入框input只能输入数字
查看>>
Python函数
查看>>
每日记录 2016-4-29 HTML5本地存储
查看>>
BZOJ3236:[AHOI2013]作业(莫队,分块)
查看>>
使用jquery.PrintArea.js打印网页的样式问题
查看>>
hihoCoder1603
查看>>
63. Unique Paths II
查看>>
【转载】MiniUtilityFramework(三):配置文件概述
查看>>
eclipse 的代码着色插件 --Eclipse Color Theme
查看>>
Java日志系统(上)
查看>>
java中的String类常量池详解
查看>>
合并文件内容
查看>>