V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
duoyuanyz
V2EX  ›  Java

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

  •  1
     
  •   duoyuanyz · 2020-07-13 10:24:53 +08:00 · 3652 次点击
    这是一个创建于 1593 天前的主题,其中的信息可能已经有所发展或是发生改变。
    19 条回复    2020-07-14 09:25:38 +08:00
    qsbaq
        1
    qsbaq  
       2020-07-13 11:02:47 +08:00
    感觉用异常处理方便些,只管插入就行了。
    qsbaq
        2
    qsbaq  
       2020-07-13 11:03:09 +08:00
    当然得设置唯一键
    playniuniu
        3
    playniuniu  
       2020-07-13 11:09:58 +08:00 via Android
    设置唯一索引,如果数据可以覆盖,就用 sql 里面的 replace into,否则就 insert into,看然后抓报错
    takemeaway
        4
    takemeaway  
       2020-07-13 11:14:25 +08:00
    不对吧,用异常那得是唯一索引啊,数据不可能都做索引吧。

    再说了重复分很多种,单 KEY 还是多 KEY 重复呢?
    zsdroid
        5
    zsdroid  
       2020-07-13 11:14:47 +08:00   ❤️ 1
    有逻辑删除需求的,唯一键会特别坑。
    1018ji
        6
    1018ji  
       2020-07-13 11:26:00 +08:00
    判断是否重复,然后的业务逻辑是啥?
    rr41ns
        7
    rr41ns  
       2020-07-13 11:31:32 +08:00
    联合唯一索引?
    jugelizi
        8
    jugelizi  
       2020-07-13 11:35:18 +08:00 via iPhone
    伪删除的坑埋了
    raysmond
        9
    raysmond  
       2020-07-13 11:42:04 +08:00   ❤️ 1
    得是数据库唯一索引才行。代码单个线程逻辑判断不行的,多线程和分布式环境下不适用。
    VictorJing94
        10
    VictorJing94  
       2020-07-13 11:49:26 +08:00
    unique 约束啊
    passerbytiny
        11
    passerbytiny  
       2020-07-13 12:04:08 +08:00 via Android
    看业务复杂度,简单的就主键 /唯一+捕获“唯一性冲突”异常,复杂点的就要先查出来再判断。但你问得是组合索引,说明不是单个字段,那业务复杂度就不会简单,必须选后者。
    littlewing
        12
    littlewing  
       2020-07-13 12:51:49 +08:00 via iPhone
    数据重复的定义是啥?是只要 key 重复就算还是整行数据所有字段都相等?
    realpg
        13
    realpg  
       2020-07-13 12:52:16 +08:00
    unique index
    insert ignore
    获取 insert id
    FFFire
        14
    FFFire  
       2020-07-13 14:33:57 +08:00
    不是特别要求效率的话还是查一下吧,业务上的事别埋坑
    Yuicon
        15
    Yuicon  
       2020-07-13 14:55:50 +08:00
    加全局锁 然后查一遍插入
    Tokiomi
        16
    Tokiomi  
       2020-07-13 15:35:48 +08:00
    互联网没有物理删除
    wangsilence
        17
    wangsilence  
       2020-07-13 16:12:07 +08:00
    建议使用逻辑,唯一索引不会使用 change buffer, 会影响插入效率
    cs3230524
        18
    cs3230524  
       2020-07-13 18:42:21 +08:00 via Android
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2790 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 20ms · UTC 14:22 · PVG 22:22 · LAX 06:22 · JFK 09:22
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.