sql - क्या यह सूचकांक को सिर्फ एक कॉलम के साथ तालिका में समझ लेता है?




tsql indexing (2)

मेरा मत यह है कि शायद यह आपके परिदृश्य में वास्तव में समझ में नहीं आता। आप कह रहे हैं कि एक तालिका के साथ यह तालिका दूसरी तालिका में रिकॉर्ड को फ़िल्टर करने के लिए दूसरे तालिका में शामिल हो जाएगी, तो क्यों न केवल इस तालिका को हटाएं, अन्य तालिका में अन्य स्तंभ को इंडेक्स करें और वह फ़िल्टर करें?

मूलतः, आप क्यों लिख रहे हैं:

SELECT * FROM manycols M INNER JOIN singlecol s ON m.id = s.id WHERE s.id = 123

जब यह है:

SELECT * FROM manycols m WHERE m.id = 123

मान लीजिए तर्क है कि कईकोलों में एक मिलियन पंक्तियाँ हैं, और सिंगलकॉल में एक हजार है आप हज़ार मिलान की पंक्तियां चाहते हैं, यह कई कैओल्स हैं, जिन्हें लाभ के लिए अनुक्रमित करने की आवश्यकता होगी।

मान लीजिए कि तर्क है कि आप एकल पंक्ति में छोड़कर सभी पंक्तियां चाहते हैं; आप सूचकांक singlecol सकता है, लेकिन अनुकूलक सिर्फ एक पूरी तरह से एक मेज में लोड करने के लिए चुन सकते हैं, फिर भी, अनुक्रमण, यह जरूरी नहीं कि मदद करेगा

ऐसा लगता है कि ऐसा करने के लिए संभवतः एक और तरीका है जो आपको इस एकल स्तंभ तालिका को पूरी तरह से हटा देता है

मुझे आश्चर्य है कि क्या यह सूचकांक को तालिका में समझ में आता है, जिसमें सिर्फ एक स्तंभ है? तालिका 100 या 1000 के अभिलेखों के साथ आबादी होगी और इसके रिकॉर्डों को फ़िल्टर करने के लिए दूसरे (बड़ी टेबल) में शामिल होने के लिए उपयोग किया जाएगा।

धन्यवाद!


हां और ना। एक स्पष्ट सूचक शायद मतलब नहीं है हालांकि, एक primary key रूप में एक स्तंभ को परिभाषित करना अक्सर किया जाता है (यह माना जाता है कि यह कभी भी NULL और अद्वितीय नहीं है)।

यह वास्तव में एक आम बात है मेरे लिए असाधारण तालियां बनाने के लिए असामान्य नहीं है, जैसे तर्क:

from . . . 
where not exists (select 1 from exclusion_table et where et.id = ?.id)

प्राथमिक कुंजी सूचकांक इस तरह की एक क्वेरी को बढ़ा सकता है।

आपके मामले में, इसमें कोई फर्क नहीं पड़ेगा यदि बड़ी तालिका में शामिल होने के लिए उपयोग किए गए आईडी पर एक इंडेक्स है हालांकि, आप किस इंडेक्स का उपयोग करने का विकल्प चुनने के विकल्प के अनुकूलक को दे सकते हैं





sql-server-2012