दो अलग-अलग इंडेक्स्ड कॉलम (Keys) पर खोज करते समय, OR` की तुलना में `UNION` अक्सर बेहतर प्रदर्शन देता है क्योंकि यह प्रत्येक SELECT को अलग-अलग इंडेक्स उपयोग करने देता है।
तरीका 1: OR ऑपरेटर (कम अनुकूलित)
SELECT field1_index, field2_index FROM tableName WHERE field1_index = '1' OR field2_index = '1';
MySQL ऑप्टिमाइज़र कई बार `OR` वाले क्वेरी में इंडेक्स मर्ज (Index Merge) नहीं कर पाता, जिससे फुल टेबल स्कैन हो सकता है।
तरीका 2: UNION (अधिक अनुकूलित)
SELECT field1_index, field2_index FROM tableName WHERE field1_index = '1' UNION SELECT field1_index, field2_index FROM tableName WHERE field2_index = '1';
UNION (डिफ़ॉल्ट रूप से `UNION DISTINCT`) प्रत्येक भाग को स्वतंत्र रूप से 실행 करता है, जिससे दोनों इंडेक्स का पूरा उपयोग होता है। डुप्लिकेट पंक्तियाँ स्वचालित रूप से हटा दी जाती हैं।
कब कौन सा चुनें?
- यदि दोनों कॉलम पर **कम्पोजिट इंडेक्स** है, तो `OR` या `IN` भी अच्छा काम कर सकता है।
- अलग-अलग इंडेक्स होने पर `UNION` (या `UNION ALL` यदि डुप्लिकेट स्वीकार्य हैं) प्राथमिकता दें।
- EXPLAIN प्लान देखकर वास्तविक प्रदर्शन जांचें।