कहो मैं एक मेज मिल गया है:क्या SQL सर्वर एक कंपाउंड इंडेक्स का उपयोग करेगा जब WHERE क्लॉज में केवल एक ही कॉलम है?
CREATE TABLE Users (
Id INT IDENTITY (1, 1),
FirstName VARCHAR(40),
LastName VARCHAR(40)
)
प्रश्नों प्रथम या पर आम तौर पर कर रहे हैं अंतिम नाम, लेकिन यह भी पर प्रथमऔरअंतिम नाम।
अगर मैं अंतिम नाम पर प्रथम और एक अन्य पर एक गैर क्लस्टर सूचकांक बनाने के लिए, तो मेरे पहले दो प्रश्नों के लिए catered रहे हैं। जाहिर है, SQL सर्वर अन्य क्वेरी के लिए index intersection का उपयोग करेगा।
वैकल्पिक रूप से, अगर मैं (प्रथम) पर और (अंतिम नाम, प्रथम नाम) पर indexees है,/एसक्यूएल सर्वर क्वेरी के लिए दूसरा सूचकांक सिर्फ अंतिम नाम साथ ही दोनों पर प्रश्नों पर इस्तेमाल कर रहा है कर सकते हैं?
क्या एसक्यूएल सर्वर स्टोर कंपाउंड इंडेक्स पार्ट्स बाएं से दाएं या दाएं से बाएं हैं? दूसरे शब्दों में: क्या यह LastNameFirstName या FirstNameLastName के रूप में कुंजी बनाएगा? या यह एक मनमाने ढंग से चुनने के लिए स्वतंत्र है?
मेरा मतलब है: बी-ट्री में डालने की कुंजी बनाते समय, ए (बी, सी) या (सी, बी, ए) के रूप में संग्रहीत एक कंपाउंड इंडेक्स (ए, बी, सी) की कुंजी है, या यह एक मनमाने ढंग से लेने के लिए एसक्यूएल सर्वर पर है? –
मुझे लगता है कि उसका मतलब क्या है कि कुंजी का निर्माण कैसे किया जाता है। एवर सही है, ठीक उसी तरह, जब आप कुंजी को परिभाषित करते हैं। और यही कारण है कि इसका उपयोग अंतिम नाम की खोज के लिए नहीं किया जा सकता है। सूचकांक-स्कैन बनाम इंडेक्स-तलाश का उल्लेख करने के लिए –