插入与唯一索引之前检查数据库索引


database index check before inserting vs unique index

我有一个用户组(多对多关系),我有一个两难境地。我可以检查用户是否已经在组中,这将对数据库进行 2 次查询(检查和插入),或者我可以在 user_id 和 group_id 上放置一个唯一的索引,然后简单地尝试插入新行,这将导致正确的用户组无论如何(如果用户有这样的组,则会失败)。

问:在此类表中有数百万行的真正大型应用程序上,哪种方法具有更快的性能?

附言。我知道第二种方法可能会由于唯一约束以外的其他原因而失败,对于某些人来说,这似乎是一种不好的做法。

即使第一种方法表现良好,您也需要一个索引,因此我认为需要一个唯一的索引。

对于性能,执行第二种方法会更好,因为当您进行插入时,如果您有索引,它将再次检查唯一性。

我会做第二种方法,并且只需进行所需的异常处理。