mysql 添加一条数据,需要判断数据是否重复。用组合索引好,还是查询数据后代码判断比较好,还是说有其他方法

2020 年 7 月 13 日
 duoyuanyz
4636 次点击
所在节点    Java
19 条回复
qsbaq
2020 年 7 月 13 日
感觉用异常处理方便些,只管插入就行了。
qsbaq
2020 年 7 月 13 日
当然得设置唯一键
playniuniu
2020 年 7 月 13 日
设置唯一索引,如果数据可以覆盖,就用 sql 里面的 replace into,否则就 insert into,看然后抓报错
takemeaway
2020 年 7 月 13 日
不对吧,用异常那得是唯一索引啊,数据不可能都做索引吧。

再说了重复分很多种,单 KEY 还是多 KEY 重复呢?
zsdroid
2020 年 7 月 13 日
有逻辑删除需求的,唯一键会特别坑。
1018ji
2020 年 7 月 13 日
判断是否重复,然后的业务逻辑是啥?
rr41ns
2020 年 7 月 13 日
联合唯一索引?
jugelizi
2020 年 7 月 13 日
伪删除的坑埋了
raysmond
2020 年 7 月 13 日
得是数据库唯一索引才行。代码单个线程逻辑判断不行的,多线程和分布式环境下不适用。
VictorJing94
2020 年 7 月 13 日
unique 约束啊
passerbytiny
2020 年 7 月 13 日
看业务复杂度,简单的就主键 /唯一+捕获“唯一性冲突”异常,复杂点的就要先查出来再判断。但你问得是组合索引,说明不是单个字段,那业务复杂度就不会简单,必须选后者。
littlewing
2020 年 7 月 13 日
数据重复的定义是啥?是只要 key 重复就算还是整行数据所有字段都相等?
realpg
2020 年 7 月 13 日
unique index
insert ignore
获取 insert id
FFFire
2020 年 7 月 13 日
不是特别要求效率的话还是查一下吧,业务上的事别埋坑
Yuicon
2020 年 7 月 13 日
加全局锁 然后查一遍插入
Tokiomi
2020 年 7 月 13 日
互联网没有物理删除
wangsilence
2020 年 7 月 13 日
建议使用逻辑,唯一索引不会使用 change buffer, 会影响插入效率
cs3230524
2020 年 7 月 13 日
newdongyuwei
2020 年 7 月 14 日

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/689476

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX