我有一个表“匹配”就像更新的行是否存在以其他方式插入
id|user1|user2|paired
--+-----+-----+--------+
1 |U_1 |null |false
我需要一个新的用户“U_2”匹配到配对=虚假记录,或创建表的新条目如果没有找到未配对的行。
这个数据库连接到多个用户可能试图配对的服务器,所以我需要找到最好的解决方案,使其更快,因此它不会长时间锁定表。
我想出了一个解决办法是
int matchId = select id from match where ((user1 != 'U_2') AND (paired = false));
if(matchId > 0)
then
update table match set user2 = 'U_2' where id = matchId;
else
insert new row.
请提出一个更好的办法。
在此先感谢。
您现有的解决方案对我来说看起来很好。这看起来很简单,你看到一个特定的性能问题吗? – worpet
感谢您的回复。我想知道是否有连击方式来做到这一点。当查询一个非常大的表时,查询数据库2次可能会增加响应时间。并且还有可能有2个或更多用户从第一个查询获得相同的ID。然后他们最终可能会更新同一行。 –