इसमें कोई संदेह नहीं है कि संस्करण 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);