php - need help with mysql joins -


  उपयोगकर्ता तालिका user_id pic_url नाम दोस्तों की तालिका auto_id userid मित्र स्थिति स्थिति तालिकाएँ तालिका auto_id userid प्रकार विषय शरीर datetime  

मैं अपडेट के एक मित्र स्ट्रीम को अद्यतन करना चाहता हूं, एक ब्लॉग पोस्ट, स्थिति परिवर्तन, कुछ भी हो सकता है, लेकिन केवल उस उपयोगकर्ता को मित्र को दिखाने के लिए ही दिखाना चाहिए

यह है कि मैं किसके साथ आया हूं लेकिन मेरा यूज़रबेस बहुत बड़ा है इसलिए प्रदर्शन करना जरूरी है, क्या ऐसा करने का एक बेहतर तरीका है? कृपया मुझे दिखाएं

  चुनें u.user_id, u.pic_url, u.name, a.auto_id, a.userid, a.type, a.subject, a.body, a.datetime FROM ए के रूप में एक बाएं जुड़ने वाले उपयोगकर्ता के रूप में क्रियाएं u.auto_id = a.userid LEFT जुड़ें दोस्तों के रूप में एफ पर f.userid = a.userid WHERE f.friendid = 1 // 1 मेरा उपयोगकर्ता आईडी और f.status = सक्रिय होगा < / Code> 

कृपया मुझे सही नहीं लगता कि कृपया यह सही है।

हम कहते हैं कि 50,000 उपयोगकर्ता हैं और मेरी यूजर आईडी # 1 है और मैं 20,000 उपयोगकर्ताओं के साथ दोस्त हूं, यह चाहिए कार्रवाई तालिका में सभी प्रविष्टियों को वापस लौटाएं जो एक उपयोगकर्ता द्वारा प्रकाशित किया गया है I के साथ दोस्त हूँ, खुद को भी शामिल करने के लिए संशोधित करने की आवश्यकता है

मैंने सुना है कि कुछ लोगों को तेजी से देखने के लिए कुछ प्रकार के हैश तालिका का इस्तेमाल करने के बारे में बात करते हैं क्या ऐसा कुछ संभव होगा?

किसी भी मदद के लिए धन्यवाद

मैंने कुछ लोगों को तेजी से देखने के लिए कुछ प्रकार के हैश टेबल का उपयोग करने के बारे में बात की है, ऐसा कुछ संभव होगा, यहाँ ऐसा होना संभव है?

इसे एक कहा जाता है, और आपको प्रत्येक कॉलम में एक जोड़ना चाहिए जिसे आप एक JOIN का उपयोग करने की योजना बना रहे हैं (या & gt ;, & gt; =, =, & lt; =, & lt; या IN () खंड जो एक निर्दिष्ट सूची में केवल आइटम से मेल खाता है)। इस तरह से डेटाबेस सर्वर सूचकांक में सही प्रविष्टियों के लिए सही कूद सकता है, बजाय सभी तालिका पंक्तियों के माध्यम से एक जानवर बल खोज करने की बजाय। यह एक पुस्तक में सूचकांक की तरह है। यदि आप किसी पुस्तक में पृष्ठों को ढूंढना चाहते हैं जिसमें "नुत" नाम दिया गया है, तो आपके पास दो विकल्प हैं यदि पुस्तक में एक सूचकांक है, तो आप सूचकांक में देखते हैं और आशा करते हैं कि नाम मौजूद है। यदि पुस्तक में कोई अनुक्रमणिका नहीं है, तो आपको पूरी चीज से खुद को पढ़ना होगा, और इससे अधिक समय लगेगा।

यदि आप ऑर्डर करने / क्रमबद्ध करने के बारे में ध्यान रखते हैं (या कोई रिश्तेदार कर रहे हैं) संख्यात्मक / स्ट्रिंग तुलना), यह एक सॉर्ट किए गए सूचकांक होना चाहिए। अन्यथा यह एक हैशटेबल इंडेक्स हो सकता है, जो बहुत सी पंक्तियों के साथ तालिकाओं के लिए तेज़ है, लेकिन कोई सॉर्टिंग जानकारी नहीं है

ध्यान दें कि प्राथमिक कुंजी पहले से ही स्वचालित रूप से जनरेटेड इंडेक्स है, इसलिए इन प्रकार के विवरणों में अलग-अलग सिंटैक्स / विकल्प होते हैं, जिसके आधार पर डेटाबेस सर्वर सॉफ़्टवेयर का उपयोग किया जाता है। ** खुद को एक जोड़ना नहीं है यह भी ध्यान रखें कि यदि आपके पास एकाधिक-स्तंभ प्राथमिक कुंजी है, तो (राज्य, शहर, ज़िपकोड) फिर प्रभावी कुंजी प्राथमिक कुंजी के बाएं सबसेटों पर सूचीबद्ध होगी, उदा। आप राज्य, और (राज्य, शहर), और (राज्य, शहर, ज़िपकोड) पर एक इंडेक्स मुफ्त में प्राप्त करते हैं, लेकिन अगर आप ज़िपकोड या सिटी या (शहर, ज़िपकोड) पर शामिल होना चाहते हैं तो आपको अपने स्वयं के सूचकांक बनाने की ज़रूरत है प्राथमिक कुंजी द्वारा प्रदान किए गए लोगों के अलावा

आपके मामले में, ऐसा लगता है कि इन कॉलमों पर आपके पास इंडेक्स होना चाहिए (मैंने उन स्तंभों को संभाला है जो पहले से ही प्राथमिक कुंजी हैं)। जब तक आपके यूजर आईडी के संख्यात्मक ऑर्डर पर कोई महत्व नहीं रहेगा, तब तक यह हैशटेट इंडेक्स के लिए अच्छे उम्मीदवार होंगे।

  Users.user_id * Friends.user_id मित्र। मित्र_आईद मित्र। एक्टिव्स.युसर_आईडी < ** MySQL के लिए, आप उस एचएएसएच को हैशटेबल इंडेक्स के लिए प्रयोग कर रहे हैं, या बीटीआरई का प्रयोग करते हुए (एक सॉर्टेड इंडेक्स के लिए) एक खंड जोड़ते हैं ... आरटीआरआई के रूप में उन पर ध्यान न दें स्थानिक डेटा के लिए यह भी ध्यान रखें कि MySQL आम स्टोरेज इंजिन इनोडीबी और माइसाम पर हैश इंडेक्स की अनुमति नहीं देता है वास्तव में बड़े डेटासेट्स को उच्च प्रदर्शन की आवश्यकता होती है, संभवत: उन्हें एचएएसएच इंडेक्स के साथ एक इन-मेमरी टेबल पर डेटा को मिरर करना पड़ता है। 50,000 पंक्तियों के साथ आपको इसके बारे में चिंता करने की आवश्यकता नहीं है; एक बीटीआरआई के खोज का समय ओ (लॉग एन) है, जबकि हैश हे ओ (1) है और संभवत: यह बहुत अंतर नहीं है। बीट्रीएं बहुत विस्तृत हैं और गहरी नहीं होने के लिए डिज़ाइन किए गए हैं; खोज चरण में एक अतिरिक्त तुलना की आवश्यकता के लिए, आपको 10 या 100 के एक कारक के द्वारा # पंक्तियों को बढ़ाने की आवश्यकता हो सकती है। 


Comments

Popular posts from this blog

c# - ListView onScroll event -

PHP - get image from byte array -

Linux Terminal Problem with Non-Canonical Terminal I/O app -