मैं की तरहअद्यतन एक पंक्ति अगर मौजूद है अन्यथा सम्मिलित
id|user1|user2|paired
--+-----+-----+--------+
1 |U_1 |null |false
मैं एक रिकॉर्ड जहां = false बनती करने के लिए 'U_2' एक नया उपयोगकर्ता से मेल खाते हैं, या तालिका में एक नई प्रविष्टि बनाने की जरूरत एक मेज 'मैच' है अगर कोई unpaired पंक्ति नहीं मिली है।
यह डीबी एक सर्वर से जुड़ा हुआ है जहां एकाधिक उपयोगकर्ता जोड़े जाने की कोशिश कर रहे हैं, इसलिए मुझे सबसे अच्छा संभव समाधान ढूंढना होगा जो इसे तेज़ बनाता है ताकि यह लंबे समय तक तालिका को लॉक न करे।
समाधान मैं के साथ आया था
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 या अधिक उपयोगकर्ताओं को पहली क्वेरी से एक ही आईडी प्राप्त करने की संभावना भी है। और फिर वे एक ही पंक्ति को अद्यतन कर सकते हैं। –