मान लीजिए मेरे पास 2 टेबल, उत्पाद और उत्पाद श्रेणियां हैं। दोनों टेबलों में Category आईडी पर संबंध है। और यह सवाल है।विदेशी कुंजी क्वेरी प्रदर्शन में सुधार करता है?
SELECT p.ProductId, p.Name, c.CategoryId, c.Name AS Category
FROM Products p
INNER JOIN ProductCategories c ON p.CategoryId = c.CategoryId
WHERE c.CategoryId = 1;
जब मैं निष्पादन योजना बनाने, टेबल ProductCategories क्लस्टर सूचकांक की तलाश, उम्मीद के रूप में है जो प्रदर्शन करती है। लेकिन टेबल उत्पादों के लिए, यह क्लस्टर इंडेक्स स्कैन करता है, जो मुझे संदेह करता है। क्यों एफके क्वेरी प्रदर्शन में सुधार करने में मदद नहीं करता है?
इसलिए मुझे Products.CategoryId पर अनुक्रमणिका बनाना है। जब मैं फिर से निष्पादन योजना बना देता हूं, तो दोनों टेबल इंडेक्स की तलाश करते हैं। और अनुमानित उप-लागत लागत बहुत कम हो गई है।
मेरे प्रश्न हैं:
FK बगल संबंध बाधा पर मदद करता है, यह किसी भी अन्य उपयोगिता है? क्या यह क्वेरी प्रदर्शन में सुधार करता है?
क्या मुझे सभी तालिकाओं में सभी एफके कॉलम (पसंद किए गए Products.CategoryId) पर इंडेक्स बनाना चाहिए?
+1: मॉडल एक बात है। प्रदर्शन एक और है। –
अच्छे मॉडल (आमतौर पर) बेहतर प्रदर्शन करते हैं। –
"विदेशी कुंजी एक संबंधपरक अखंडता उपकरण हैं" - कृपया देखभाल के साथ 'संबंधपरक' शब्द का उपयोग करें। विदेशी कुंजी एक डेटाबेस अवधारणा है, एक संदर्भित अखंडता बाधा के लिए एक छोटा हाथ है। वे संबंधपरक मॉडल का हिस्सा नहीं हैं। मुझे लगता है कि आपने एक टाइपो बनाया है। – onedaywhen