我在许多应用程序中看到它们使用唯一约束以及在某些应用程序中使用而不是使用唯一约束它们使用插入(如果不存在查询)
在多线程环境中,有多个线程可能同时插入多个线程..也可能是相同的秒或毫秒......
在这种情况下,哪个选项最好?如果不存在,则寻求唯一约束或进行插入.
谢谢.
小智 3
我更喜欢使用唯一的密钥,因为它们是透明的并且可以防止源重复。(即,您不能在代码中引入错误来添加重复数据,或者其他应用程序/人员即使直接编辑表数据也无法添加重复数据)
对于多线程应用程序,如果代码/查询写得不好,可能会导致重复,但良好的实现可以保证唯一性。(单个事务、存在检查和插入在同一查询中,而不是在不同查询中、非自动提交等)
另一方面,唯一键约束的缺点是数据库开销。(实际上想不出任何其他缺点)
所以事情是这样的:
选项1:依赖数据库,其任务是处理数据和相关约束,其中大多数实现在性能和可靠性方面都非常好。
选项 2:手动编写唯一约束检查代码,最终使用数据库查询进行唯一检查。如果有其他写入客户端写入同一数据库表,它也不能防止重复数据。
如果您主要关心的是性能,那么这取决于您的数据和数据库。你需要做一个基准测试。
否则,选择就很明确了。