0

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

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

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

4

1 回答 1

1

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

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

我会采用第二种方法,只需准备好所需的异常处理即可。

于 2013-10-26T19:30:42.010 回答