सामान्य तौर पर, चयन फ़िल्टर user_id
. पर अनुक्रमणिका का उपयोग कर सकते हैं या activity_type_id
या दोनों (किसी भी क्रम में)।
ऑर्डरिंग ऑपरेशन created_at
. पर फ़िल्टर का उपयोग करने में सक्षम हो सकता है ।
यह संभव है कि इस क्वेरी के लिए, (user_id, activity_type_id)
पर एक समग्र अनुक्रमणिका हो यह मानते हुए कि MySQL वास्तव में इसका उपयोग कर सकता है, सर्वोत्तम परिणाम देगा। ऐसा न करने पर, user_id
. को इंडेक्स करना बेहतर होगा activity_type_id
. की तुलना में क्योंकि यह बेहतर चयनात्मकता प्रदान करने की संभावना है। यह सोचने का एक कारण यह है कि यदि सूचकांक activity_type_id
पर किसी अनुक्रमणिका का उपयोग करता है तो उसे स्कैन करने के लिए 4 उपखंड होंगे। , स्कैन करने के लिए केवल एक उपखंड की तुलना में यदि यह user_id
. पर किसी अनुक्रमणिका का उपयोग करता है अकेले।
सॉर्ट ऑर्डर के लिए किसी इंडेक्स पर भरोसा करने की कोशिश करने का मतलब एक पूर्ण टेबल स्कैन हो सकता है, इसलिए इसके फायदेमंद होने की संभावना कम है। मैं created_at
. पर एक इंडेक्स नहीं बनाऊंगा इस क्वेरी का समर्थन करने के लिए; अन्य प्रश्न भी हो सकते हैं जहां यह फायदेमंद होगा।