未分類 21 7 月 2020 mysql 添加一条数据,需要判断数据是否重复。用组合索引好,还是查询数据后代码判断比较好,还是说有其他方法 mysql 添加一条数据,需要判断数据是否重复。用组合索引好,还是查询数据后代码判断比较好,还是说有其他方法 資深大佬 : duoyuanyz 10 感觉用异常处理方便些,只管插入就行了。 大佬有話說 (18) 資深大佬 : qsbaq 当然得设置唯一键 資深大佬 : qsbaq 设置唯一索引,如果数据可以覆盖,就用 sql 里面的 replace into,否则就 insert into,看然后抓报错 資深大佬 : playniuniu 不对吧,用异常那得是唯一索引啊,数据不可能都做索引吧。 再说了重复分很多种,单 KEY 还是多 KEY 重复呢? 資深大佬 : takemeaway 有逻辑删除需求的,唯一键会特别坑。 資深大佬 : zsdroid 判断是否重复,然后的业务逻辑是啥? 資深大佬 : 1018ji 联合唯一索引? 資深大佬 : rr41ns 伪删除的坑埋了 資深大佬 : jugelizi 得是数据库唯一索引才行。代码单个线程逻辑判断不行的,多线程和分布式环境下不适用。 資深大佬 : raysmond unique 约束啊 資深大佬 : VictorJing94 看业务复杂度,简单的就主键 /唯一+捕获“唯一性冲突”异常,复杂点的就要先查出来再判断。但你问得是组合索引,说明不是单个字段,那业务复杂度就不会简单,必须选后者。 資深大佬 : passerbytiny 数据重复的定义是啥?是只要 key 重复就算还是整行数据所有字段都相等? 資深大佬 : littlewing unique indexinsert ignore获取 insert id 資深大佬 : realpg 不是特别要求效率的话还是查一下吧,业务上的事别埋坑 資深大佬 : FFFire 加全局锁 然后查一遍插入 資深大佬 : Yuicon 互联网没有物理删除 資深大佬 : Tokiomi 建议使用逻辑,唯一索引不会使用 change buffer, 会影响插入效率 資深大佬 : wangsilence 锁 資深大佬 : cs3230524 https://stackoverflow.com/questions/1361340/how-to-insert-if-not-exists-in-mysql/1361368