मैं अपने डेटाबेस में दो तालिकाओं है एक उपयोगकर्ता की जानकारी (users_table) रखने के लिए और दूसरा मित्र का ट्रैक रखता गिनतीएक मित्र सूची क्वेरी में सुधार: परस्पर मित्र
users_table:
id username avatar
1 max max.jpg
2 jack jack.jpg
friends_table:
id u1_id u2_id
1 1 2
2 1 3
हर उपयोगकर्ता प्रोफ़ाइल में मैं उसकी/उसके मित्र सूची दिखाने के लिए
012,यहाँ मेरी क्वेरी ($ PROFILE_ID)
select u.id,
u.username,
u.avatar
from friends_table f
join users_table u on f.u1_id = u.id || f.u2_id = u.id
where u.id <> $profile_id
and (f.u1_id = $profile_id || f.u2_id = $profile_id)
इस क्वेरी प्रोफ़ाइल का स्वामी के दोस्तों का चयन करता है और उन्हें अब मैं चाहता हूँ प्रत्येक दोस्त उपयोगकर्ता नाम और अवतार
प्राप्त करने के लिए उपयोगकर्ता की मेज के साथ शामिल हो प्रत्येक मित्र और प्रोफाइल मालिक के बीच पारस्परिक मित्रों की गिनती करने के लिए यह एक प्रश्न में संभव है या क्या मुझे प्रत्येक स्थापित मित्र के लिए कुछ लंबी और शायद धीमी क्वेरी करना चाहिए (यह सिर्फ एक उदाहरण है और इसमें कुछ वाक्यविन्यास त्रुटि हो सकती है):
foreach ($friends_list_query_resul as $qr){
$friend_id = $qr['id'];
$mutual_count = mysql_query
("select count(*) from friends_table where
($u1_id = $friend_id || $u2_id = $friend_id)
&&
($u1_id IN (SELECT `u1_id`,`u2_id` from friends_table where
($u1_id = $profile_id || $u2_id = $profile_id))
||
$u2_id IN (SELECT `u1_id`,`u2_id` from friends_table where
($u1_id = $profile_id || $u2_id = $profile_id))
")
}
पूंजी अक्षरों से डरें ... – Lix
मेरी सलाह है कि प्रत्येक आईडी के मित्र की सूची निकालें, और php के साथ आम दोस्तों के बीच मैच बनाते हैं, एमएसक्यूएल अन्य प्रोग्रामिंग भाषाओं की तुलना में धीमी है जब यह डेटा में हेरफेर करने के बारे में है। – jcho360
@ jcho360 खराब सलाह। डाटाबेस इस तरह के इन-मेमोरी दृष्टिकोण से कहीं ज्यादा बेहतर पैमाने पर स्केल कर सकते हैं। जब डेटाबेस डेटा में हेरफेर करने के बारे में है, तो डेटाबेस "अन्य प्रोग्रामिंग भाषाओं की तुलना में धीमे नहीं होते हैं", वास्तव में वे आमतौर पर बहुत तेज़ होते हैं, * अगर * सही ढंग से उपयोग किया जाता है। –