我有一個表「匹配」就像更新的行是否存在以其他方式插入
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。然後他們最終可能會更新同一行。 –