मैं एक अंग पर बाहर जाऊंगा और कहूंगा कि ऐसा इसलिए है क्योंकि आप MyISAM इंजन का उपयोग कर रहे हैं।
यह INNODB के साथ पूरी तरह से ठीक काम कर रहा है जैसा कि इसमें देखा जा सकता है उत्तर मेरा।
मैं इस मामले पर कम से कम 1 माननीय संदर्भ को जगाने की कोशिश करूंगा।
यहां, रेंज जॉइन टाइप , स्पष्ट रूप से एक INNODB फोकस है क्योंकि यह डिफ़ॉल्ट इंजन है। और जब कुछ दस्तावेज़ीकरण पदानुक्रम में मैनुअल में स्पष्ट रूप से उल्लेख नहीं किया जाता है, तो यह मान लिया जाता है।
ध्यान दें, मेरे उदाहरण लिंक में आईडी के बारे में कुछ भी सन्निहित नहीं है। मतलब, type=range
. पर हाइपरफोकस न करें इसके EXPLAIN आउटपुट में। गति अनुकूलक (CBO) के माध्यम से प्राप्त की जाती है।
cardinality
मेरे उदाहरण में बहुत अधिक (4.3 मिलियन) है। लक्ष्य आईडी की संख्या अपेक्षाकृत कम (1000) है। सूचकांक का उपयोग किया जाता है।
आपकी स्थिति इसके विपरीत हो सकती है:आपकी कार्डिनैलिटी अविश्वसनीय रूप से कम हो सकती है, जैसे 3, और ऑप्टिमाइज़र इंडेक्स के उपयोग को छोड़ने का फैसला करता है।
अपनी अनुक्रमणिका की जाँच करने के लिए cardinality
, मैनुअल पेज देखें INDEX Syntax दिखाएं
।
एक साधारण कॉल जैसे:
show index from ratings;
+---------+------------+----------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+---------------+
| Table | Non_unique | Key_name | Seq_in_index | Column_name | Collation | Cardinality | Sub_part | Packed | Null | Index_type | Comment | Index_comment |
+---------+------------+----------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+---------------+
| ratings | 0 | PRIMARY | 1 | id | A | 4313544 | NULL | NULL | | BTREE | | |
+---------+------------+----------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+---------------+