一尘不染

设置MySQL唯一键或检查应用程序部分中的重复项?

sql

哪一个更可靠并具有更好的性能?设置MySQL唯一键并使用INSERT IGNORE或首先检查数据库中是否存在数据并根据结果采取行动?

如果答案是第二个,是否有办法进行单个SQL查询而不是两个?

更新:我问,因为我工作的公司的同事们认为应对此类问题应在应用程序部分完成,据他们所述,该部分更为可靠。


阅读 99

收藏
2021-05-16

共1个答案

一尘不染

您的应用程序 不会 捕获重复项。

两个并发调用可以插入相同的数据,因为在您的应用程序检查唯一性时,每个进程都看不到另一个。每个进程都认为可以插入。

您可以强制执行某种序列化操作,但是会遇到瓶颈和性能限制。而且您 有其他客户端写入数据库,即使它只是一个发行脚本,

这就是为什么通常存在唯一索引和约束之类的原因。外键,触发器,检查约束,NULL / NIOT NULL,数据类型约束都可以用来增强数据完整性

一些代码猴子也认为他们可以做得更好,这是自大的。

2021-05-16