Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
我有一个用户组(多对多关系),我有一个两难选择。我可以检查用户是否已经在组中,这将对数据库进行 2 次查询(检查并插入),或者我可以在 user_id 和 group_id 上放置一个唯一索引,然后简单地尝试插入新行,这将导致正确的用户组(会如果用户有这样的组,则失败)。
问题:在此类表中有数百万行的真正大型应用程序上,哪种方法的性能更快?
PS。我知道第二种方法可能由于唯一约束以外的其他原因而失败,这对某些人来说似乎是一种不好的做法。
即使第一种方法表现良好,您也需要一个索引,所以我认为唯一索引是必要的。
对于性能,执行第二种方法会更好,因为当您执行插入时,如果您有索引,它将再次检查唯一性。
我会采用第二种方法,只需准备好所需的异常处理即可。