यहां दो संभावित अनुक्रमण रणनीतियां हैं, जो इस बात पर निर्भर करती है कि इनर जॉइन के बाईं ओर दो में से कौन सी टेबल दिखाई देती है (दोनों में से कोई भी टेबल जॉइन के दोनों ओर संभावित रूप से दिखाई दे सकती है)। यह देखते हुए कि HotelRoom
तालिका में Hotel
. की तुलना में कई अधिक रिकॉर्ड होने की संभावना है तालिका, मैं Hotel
. रखने का सुझाव दूंगा शामिल होने के बाईं ओर तालिका। इसका मतलब यह होगा कि Hotel
तालिका को स्कैन किया जाएगा, और HotelRoom
. में शामिल होने के लिए उपयोग की जाने वाली अनुक्रमणिका . फिर, हम HotelRoom
. पर निम्न अनुक्रमणिका का उपयोग करने का प्रयास कर सकते हैं :
CREATE INDEX hotel_room_idx ON HotelRoom (HotelId, Deleted, Enabled, Name, RoomId);
इससे जुड़ने में काफी तेजी आनी चाहिए, WHERE
. को कवर करता है खंड, और HotelRoom
. पर चयन के सभी स्तंभों को भी शामिल करता है . ध्यान दें कि निम्नलिखित सरलीकृत सूचकांक भी बहुत प्रभावी हो सकते हैं:
CREATE INDEX hotel_room_idx ON HotelRoom (HotelId, Deleted, Enabled);
यह सिर्फ शामिल होने और WHERE
. को कवर करता है खंड, लेकिन MySQL अभी भी इसका उपयोग करना चुन सकता है।