यह प्रश्न SQL सर्वर इंडेक्सिंग तकनीक की प्रभावशीलता के बारे में है। मुझे लगता है कि इसे "इंडेक्स चौराहा" के रूप में जाना जाता है।
मैं एक मौजूदा SQL सर्वर (2008) एप्लिकेशन के साथ काम कर रहा हूं जिसमें कई प्रदर्शन और स्थिरता के मुद्दे हैं। डेवलपर्स ने इंडेक्सिंग के साथ कुछ अजीब चीजें कीं। मैं इन मुद्दों पर निर्णायक बेंचमार्क प्राप्त करने में सक्षम नहीं हूं, और न ही मैं इंटर्नेट्स पर कोई बहुत अच्छा प्रलेखन पा सकता हूं।
एक मेज पर कई खोज योग्य स्तंभ हैं। डेवलपर्स ने खोजा स्तंभों में से एक पर एक एकल स्तंभ सूचकांक बनाया। सिद्धांत यह था कि एसक्यूएल सर्वर इन परिस्थितियों में से प्रत्येक को कुशलतापूर्वक अधिकांश परिस्थितियों में तालिका तक पहुंचने के लिए (प्रतिच्छेद) संयोजित कर सकता है। यहाँ एक सरल उदाहरण है (वास्तविक तालिका में अधिक क्षेत्र हैं):
CREATE TABLE [dbo].[FatTable](
[id] [bigint] IDENTITY(1,1) NOT NULL,
[col1] [nchar](12) NOT NULL,
[col2] [int] NOT NULL,
[col3] [varchar](2000) NOT NULL, ...
CREATE NONCLUSTERED INDEX [IndexCol1] ON [dbo].[FatTable] ( [col1] ASC )
CREATE NONCLUSTERED INDEX [IndexCol2] ON [dbo].[FatTable] ( [col2] ASC )
select * from fattable where col1 = '2004IN'
select * from fattable where col1 = '2004IN' and col2 = 4
मुझे लगता है कि खोज मापदंड के लिए लक्षित कई कॉलम इंडेक्स बहुत बेहतर हैं, लेकिन मैं गलत हो सकता हूं। मैंने क्वेरी योजनाओं को देखा है जो एसक्यूएल सर्वर को दो अनुक्रमांक पर हैश मैच करते हुए दिखाते हैं। शायद यह तब समझ में आता है जब आपको पता नहीं होता है कि टेबल की खोज कैसे की जाती है? धन्यवाद।