Mysql
 sql >> डेटाबेस >  >> RDS >> Mysql

पैरेंट रो का चयन तभी करें जब उसके कोई बच्चे न हों

SELECT id FROM A LEFT OUTER JOIN B ON A.id=B.id WHERE B.id IS NULL

तुम यह केर सकते हो। बाहरी जुड़ाव थोड़ा प्रदर्शन लाना चाहिए, लेकिन ज्यादा नहीं।

नए डेटाबेस सिस्टम शायद आपकी क्वेरी को वैसे भी अनुकूलित करेंगे ताकि कोई अंतर न हो।

यहाँ सही तरीका कैशिंग है! यदि संभव हो तो क्वेरी कैशर और एप्लिकेशन स्तर कैशिंग का प्रयास करें।

बेशक आपको उचित अनुक्रमणिका की आवश्यकता है।

और उचित रूप से मेरा मतलब दोनों तालिकाओं और अधिमानतः एक हैश इंडेक्स पर है क्योंकि इसमें लॉगरिदमिक वाले किसी भी पेड़ की तुलना में स्थिर लुकअप समय होगा

यह देखने के लिए कि क्या वास्तव में इसे धीमा करता है, क्वेरी से पहले एक व्याख्या डालने का प्रयास करें।

यदि आपको वास्तव में तेज़ होने के लिए इसकी आवश्यकता है तो आप अपनी डेटा संरचना को फिर से तैयार कर सकते हैं।

आप संभवतः तालिका ए में ध्वज को चिह्नित करने के लिए एक ट्रिगर बना सकते हैं चाहे तालिका में संबंधित प्रविष्टि हो। बेशक यह आईडी डेटा अतिरेक है, लेकिन कभी-कभी इसके लायक है। बस इसे कैशिंग के रूप में सोचें।

एक आखिरी विचार:आप कोशिश कर सकते हैं SELECT id FROM A WHERE id NOT IN (SELECT id FROM B) यह थोड़ा तेज़ हो सकता है क्योंकि कोई वास्तविक जुड़ाव आवश्यक नहीं है, हालाँकि यह धीमा भी हो सकता है क्योंकि be के सेट में लुकअप एक पूर्ण स्कैन होगा। मुझे वास्तव में यकीन नहीं है कि इसे कैसे संसाधित किया जाएगा लेकिन यह एक कोशिश के काबिल हो सकता है।



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Passport, Redis और MySQL का उपयोग करके Node.js में सत्रों का प्रबंधन कैसे करें

  2. एसक्यूएल क्वेरी से कई पेज बनाना

  3. कोडनिर्देशक में मान शून्य नहीं है

  4. संग्रहित प्रक्रियाओं, कार्यों और दिनचर्या के बीच क्या अंतर है?

  5. PHP और MySQL डेटाबेस का उपयोग करके टू-डू सूची एप्लिकेशन