रिकॉर्ड की एक निश्चित संख्या से शुरू करके, IN
एक SELECT
. पर विधेय स्थिरांक की सूची से अधिक तेज़ हो जाता है।
प्रदर्शन तुलना के लिए मेरे ब्लॉग में यह लेख देखें:
यदि क्वेरी में प्रयुक्त कॉलम IN
. में है खंड को इस तरह अनुक्रमित किया जाता है:
SELECT *
FROM table1
WHERE unindexed_column IN
(
SELECT indexed_column
FROM table2
)
, तो यह क्वेरी बस एक EXISTS
. के लिए अनुकूलित है (जो table1
. से प्रत्येक रिकॉर्ड के लिए केवल एक प्रविष्टि का उपयोग करता है )
दुर्भाग्य से, MySQL
HASH SEMI JOIN
करने में सक्षम नहीं है या MERGE SEMI JOIN
जो अभी तक अधिक कुशल हैं (विशेषकर यदि दोनों कॉलम अनुक्रमित हैं)।