मान लीजिए कि मेरे पास 2 टेबल, उत्पाद और उत्पाद श्रेणी हैं। दोनों तालिकाओं का कैटिगरी पर संबंध है। और यह क्वेरी है।
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 क्लस्टर इंडेक्स की तलाश करती है, जो उम्मीद के मुताबिक है। लेकिन तालिका उत्पादों के लिए, यह क्लस्टर इंडेक्स स्कैन करता है, जिससे मुझे संदेह होता है। FK क्वेरी प्रदर्शन को बेहतर बनाने में मदद क्यों नहीं करता है?
इसलिए मुझे Products.CategoryId पर इंडेक्स बनाना होगा। जब मैं फिर से निष्पादन योजना बनाता हूं, तो दोनों तालिकाएं सूचकांक की तलाश करती हैं। और अनुमानित सबट्री लागत बहुत कम हो गई है।
मेरे प्रश्न हैं:
एफके के साथ संबंध बाधा पर मदद करता है, क्या इसकी कोई अन्य उपयोगिता है? क्या यह क्वेरी प्रदर्शन में सुधार करता है?
क्या मुझे सभी तालिकाओं में सभी FK कॉलम (पसंद किए गए Products.CategoryId) पर सूचकांक बनाना चाहिए?