Mysql
 sql >> डेटाबेस >  >> RDS >> Mysql

प्राथमिक कुंजी पर जॉइन का उपयोग करते समय मुझे किस इंडेक्स का उपयोग करना चाहिए

यहां दो संभावित अनुक्रमण रणनीतियां हैं, जो इस बात पर निर्भर करती है कि इनर जॉइन के बाईं ओर दो में से कौन सी टेबल दिखाई देती है (दोनों में से कोई भी टेबल जॉइन के दोनों ओर संभावित रूप से दिखाई दे सकती है)। यह देखते हुए कि 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 अभी भी इसका उपयोग करना चुन सकता है।



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. C2DM के बिना स्थानीय नेटवर्क पर डिवाइस से डिवाइस पर सूचना पुश करें

  2. विस्फोट के बराबर () MySQL में तार के साथ काम करने के लिए

  3. एसक्यूएल स्टेटमेंट में सभी रिकॉर्ड्स का चयन करने के लिए WHERE क्लॉज का उपयोग करना संभव है?

  4. मैं एक कॉलम कैसे जोड़ सकता हूं जो उसी तालिका में किसी अन्य कॉलम पर बढ़ता है?

  5. MySQL अंडरस्टैंडिंग बेसिक जॉइन