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

mysql:दोनों में से सबसे कुशल क्वेरी चुनना

इसमें कोई संदेह नहीं है कि संस्करण 1 - अलग जहां संघ के प्रत्येक पक्ष में खंड - तेज होंगे। आइए देखें कि क्यों संस्करण - जहां संघ परिणाम पर खंड - बदतर है:

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

यदि आप अधिकतम प्रदर्शन चाहते हैं, तो UNION ALL use का उपयोग करें , जो UNION . के बजाय, बिना किसी ओवरहेड के सीधे परिणाम में पंक्तियों को पास करता है , जो डुप्लिकेट को हटा देता है (आमतौर पर सॉर्ट करके) और महंगा हो सकता है और आपकी टिप्पणियों के आधार पर अनावश्यक है

इन अनुक्रमणिकाओं को परिभाषित करें और अधिकतम प्रदर्शन के लिए संस्करण 1 का उपयोग करें:

create index t1_authorID_postType on t1(authorID, postType);
create index t1_websiteID_postType on t1(websiteID, postType);


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. एक्सेल फ़ाइल को MySQL वर्कबेंच में कैसे आयात करें?

  2. किसी दिए गए कॉलम नाम वाली सभी तालिकाओं की सूची बनाएं

  3. पिछला क्वेरी लॉग देखना - MySQL

  4. Ubuntu 10.10 (Maverick) पर MySQL रिलेशनल डेटाबेस का उपयोग करें

  5. MySQL जॉइन, ग्रुप बाय, ऑर्डर बाय