synchronized和查库哪个性能更差?

spring,springboot,java,mybatis,mysql,web和数据库在一台服务器,不考虑主从复制等其他影响。
就是一个很无语的问题吧。
现在有一个需求,要创建一条数据。
情况如下:
如果没有这条数据则创建,有则直接返回。id为自增,无其他限制。
为了防止用户误操作,我加了线程锁,里面有if是否存在。
但现在问题是,他俩谁更慢一点。
我要不要采用双if校验。if 锁 if
因为我不知道他俩谁更慢一点

首先,查库是无法避免重复插入的情况的,因为极大可能多个线程同时查询数据库没有记录,然后就都可以插入数据。
保险的办法是,使用用双重校验锁模式

查库
if(库里不存在){
    syn(){
        查库
        if(库里不存在){
            存库
        }
    }
}

这两个有可比性么?多线程操作的话就自己加锁吧

synchronized会多节点失效.
查后新增有并发问题.
你拿啥查,那个字段设置唯一索引,直接插入,忽略那个字段的重复键异常不就得了