यह MySQL में एक ज्ञात कमी है।
यह अक्सर सच होता है कि UNION
. का उपयोग करना आपके द्वारा दिखाए जाने वाली श्रेणी क्वेरी से बेहतर प्रदर्शन करता है। MySQL IN (...)
. का उपयोग करके अभिव्यक्तियों के लिए बहुत समझदारी से अनुक्रमणिका का उपयोग नहीं करता है . OR
. के साथ बूलियन एक्सप्रेशन के लिए ऑप्टिमाइज़र में एक समान छेद मौजूद है ।
देखें http ://www.mysqlperformanceblog.com/2006/08/10/using-union-to-implement-loose-index-scan-to-mysql/ कुछ स्पष्टीकरण और विस्तृत बेंचमार्क के लिए।
ऑप्टिमाइज़र में हर समय सुधार किया जा रहा है। MySQL के एक संस्करण में कमी को बाद के संस्करण में सुधारा जा सकता है। तो यह विभिन्न संस्करणों पर आपके प्रश्नों का परीक्षण करने लायक है।
UNION ALL
. का उपयोग करना भी फायदेमंद है बस UNION
. के बजाय . दोनों प्रश्न परिणामों को संग्रहीत करने के लिए एक अस्थायी तालिका का उपयोग करते हैं, लेकिन अंतर यह है कि UNION
लागू होता है DISTINCT
परिणाम सेट के लिए, जो एक अतिरिक्त गैर-अनुक्रमित सॉर्ट करता है।