एसक्यूएल में एक सूचकांक क्या है ? क्या आप स्पष्ट रूप से समझने के लिए समझा सकते हैं या संदर्भ दे सकते हैं?
मुझे एक सूचकांक का उपयोग कहां करना चाहिए?
एसक्यूएल में एक सूचकांक क्या है ? क्या आप स्पष्ट रूप से समझने के लिए समझा सकते हैं या संदर्भ दे सकते हैं?
मुझे एक सूचकांक का उपयोग कहां करना चाहिए?
जवाबों:
डेटाबेस में खोज को गति देने के लिए एक इंडेक्स का उपयोग किया जाता है। MySQL के विषय पर कुछ अच्छे दस्तावेज हैं (जो अन्य SQL सर्वरों के लिए भी प्रासंगिक है): http://dev.mysql.com/doc/refman/5.0/en/mysql-indexes.html
एक इंडेक्स का उपयोग आपकी क्वेरी में कुछ कॉलम से मेल खाने वाली सभी पंक्तियों को कुशलतापूर्वक खोजने के लिए किया जा सकता है और फिर सटीक मिलान खोजने के लिए तालिका के केवल सबसेट के माध्यम से चल सकता है। यदि आपके पास WHERE
खंड में किसी भी स्तंभ पर अनुक्रमणिका नहीं है , तो SQL
सर्वर को पूरी तालिका के माध्यम से चलना होगा और यह देखने के लिए कि क्या मेल खाता है, यह देखने के लिए प्रत्येक पंक्ति की जांच करनी चाहिए, जो बड़ी तालिकाओं पर एक धीमी कार्रवाई हो सकती है।
इंडेक्स एक UNIQUE
इंडेक्स भी हो सकता है , जिसका अर्थ है कि आपके पास उस कॉलम में डुप्लिकेट मान नहीं हो सकते हैं, या PRIMARY KEY
जो कुछ स्टोरेज इंजन में परिभाषित करते हैं, जहां डेटाबेस फ़ाइल में मान संग्रहीत होता है।
MySQL में आप EXPLAIN
अपने SELECT
स्टेटमेंट के सामने यह देखने के लिए उपयोग कर सकते हैं कि आपकी क्वेरी किसी इंडेक्स का उपयोग करेगी या नहीं। प्रदर्शन की समस्याओं के निवारण के लिए यह एक अच्छी शुरुआत है। यहां पढ़ें:
http://dev.mysql.com/doc/refman/5.0/en/explain.html
एक गुच्छेदार सूचकांक एक फोन बुक की सामग्री की तरह है। आप 'हिल्डिच, डेविड' में किताब खोल सकते हैं और एक दूसरे के बगल में 'हिल्डिच के सभी के लिए सभी जानकारी पा सकते हैं। यहाँ संकुल अनुक्रमणिका के लिए कुंजियाँ हैं (lastname, firstname)।
यह श्रेणीबद्ध प्रश्नों के आधार पर बहुत सारे डेटा को पुनः प्राप्त करने के लिए संकुल अनुक्रमित को महान बनाता है क्योंकि सभी डेटा एक दूसरे के बगल में स्थित होते हैं।
चूँकि क्लस्टर इंडेक्स वास्तव में डेटा को कैसे संग्रहीत किया जाता है, इससे संबंधित है, प्रति तालिका में उनमें से केवल एक ही संभव है (हालाँकि आप कई क्लस्टर इंडेक्स को अनुकरण करने के लिए धोखा दे सकते हैं)।
एक गैर-क्लस्टर इंडेक्स अलग है जिसमें आप उनमें से कई हो सकते हैं और वे तब क्लस्टर इंडेक्स में डेटा को इंगित करते हैं। आपके पास एक फोन बुक के पीछे एक गैर-संकुलित सूचकांक हो सकता है, जिस पर (शहर, पता) कुंजीबद्ध है
कल्पना कीजिए कि क्या आपको 'लंदन' में रहने वाले सभी लोगों के लिए फोन बुक के माध्यम से खोज करना था - केवल क्लस्टर इंडेक्स के साथ आपको फोन बुक में हर एक आइटम को खोजना होगा क्योंकि क्लस्टर इंडेक्स पर कुंजी है (अंतिम नाम, Firstname) और परिणामस्वरूप लंदन में रहने वाले लोग पूरे सूचकांक में बेतरतीब ढंग से बिखरे हुए हैं।
यदि आपके पास (शहर) पर एक गैर-संकुल सूचकांक है, तो इन प्रश्नों को अधिक तेज़ी से निष्पादित किया जा सकता है।
उम्मीद है की वो मदद करदे!
एक डेटाबेस में एक सूचकांक के रूप में एक डेटाबेस सूचकांक के बारे में सोचने के लिए एक बहुत अच्छा सादृश्य है। यदि आपके पास देशों के संबंध में एक पुस्तक है और आप भारत की तलाश कर रहे हैं, तो आप पूरी पुस्तक के माध्यम से फ्लिप क्यों करेंगे - जो डेटाबेस शब्दावली में एक पूर्ण तालिका स्कैन के बराबर है - जब आप बस सूचकांक में जा सकते हैं पुस्तक, जो आपको सटीक पृष्ठ बताएगी जहां आप भारत के बारे में जानकारी पा सकते हैं। इसी तरह, जैसे पुस्तक सूचकांक में पृष्ठ संख्या होती है, डेटाबेस सूचकांक में उस पंक्ति में एक सूचक होता है जिसमें वह मान होता है जिसे आप अपने SQL में खोज रहे हैं।
एक सूचकांक का उपयोग प्रश्नों के प्रदर्शन को तेज करने के लिए किया जाता है। यह उन डेटाबेस डेटा पेजों की संख्या को कम करके करता है जिन्हें विज़िट / स्कैन करना है।
SQL सर्वर में, एक संकुल सूचकांक एक तालिका में डेटा के भौतिक क्रम को निर्धारित करता है। प्रति टेबल केवल एक क्लस्टर इंडेक्स हो सकता है (क्लस्टर इंडेक्स टेबल है)। एक मेज पर अन्य सभी अनुक्रमित गैर-संकुलित करार दिए जाते हैं।
इंडेक्स सभी जल्दी से डेटा खोजने के बारे में हैं ।
किसी डेटाबेस में अनुक्रमित अनुक्रमित अनुक्रमित होते हैं जो आपको एक पुस्तक में मिलते हैं। यदि किसी पुस्तक में एक इंडेक्स है, और मैं आपसे उस पुस्तक में एक अध्याय खोजने के लिए कहता हूं, तो आप सूचकांक की सहायता से जल्दी से खोज सकते हैं। दूसरी ओर, यदि पुस्तक में अनुक्रमणिका नहीं है, तो आपको पुस्तक के प्रारंभ से अंत तक हर पृष्ठ को देखकर अध्याय की तलाश में अधिक समय देना होगा।
इसी तरह से, एक डेटाबेस में अनुक्रमित प्रश्नों को डेटा जल्दी से खोजने में मदद कर सकता है। यदि आप अनुक्रमणिका में नए हैं, तो निम्न वीडियो, बहुत उपयोगी हो सकते हैं। वास्तव में, मैंने उनसे बहुत कुछ सीखा है।
इंडेक्स बेसिक्स
क्लस्टर्ड और नॉन-क्लस्टर्ड इंडेक्स
यूनिक और नॉन-यूनिक इंडेक्स इंडेक्स के
फायदे और नुकसान
सामान्य सूचकांक में अच्छी तरह से एक है B-tree
। अनुक्रमणिका दो प्रकार की होती हैं: गुच्छेदार और अधपकी।
क्लस्टर किए गए सूचकांक पंक्तियों का एक भौतिक क्रम बनाता है (यह केवल एक हो सकता है और ज्यादातर मामलों में यह एक प्राथमिक कुंजी भी है - यदि आप टेबल पर प्राथमिक कुंजी बनाते हैं तो आप इस तालिका पर भी क्लस्टर इंडेक्स बनाते हैं)।
गैर- अनुक्रमित सूचकांक भी एक द्विआधारी पेड़ है लेकिन यह पंक्तियों का भौतिक क्रम नहीं बनाता है। तो गैर-अनुक्रमित सूचकांक के पत्ती नोड्स में पीके (यदि यह मौजूद है) या पंक्ति सूचकांक शामिल हैं।
इंडेक्स का उपयोग खोज की गति बढ़ाने के लिए किया जाता है। क्योंकि जटिलता ओ (लॉग एन) की है। सूचकांक बहुत बड़ा और दिलचस्प विषय है। मैं कह सकता हूं कि बड़े डेटाबेस पर इंडेक्स बनाना कभी-कभी किसी तरह की कला है।
पहले हमें यह समझने की आवश्यकता है कि क्वेरी को सामान्य (अनुक्रमण के बिना) कैसे चलता है। यह मूल रूप से प्रत्येक पंक्तियों को एक-एक करके आगे बढ़ाता है और जब यह डेटा वापस पाता है। निम्न छवि देखें। (यह चित्र इस वीडियो से लिया गया है ।)
तो मान लीजिए कि क्वेरी को 50 खोजना है, तो उसे 49 रिकॉर्ड्स को लीनियर सर्च के रूप में पढ़ना होगा।
निम्न छवि देखें। (यह चित्र इस वीडियो से लिया गया है )
जब हम अनुक्रमण लागू करते हैं, तो क्वेरी प्रत्येक बाइनरी खोज की तरह प्रत्येक ट्रैवर्सल में आधे डेटा को समाप्त करके उनमें से प्रत्येक को पढ़ने के बिना डेटा को जल्दी से खोज लेगी। Mysql इंडेक्स को बी-ट्री के रूप में संग्रहीत किया जाता है जहां सभी डेटा पत्ती नोड में होते हैं।
INDEX एक प्रदर्शन अनुकूलन तकनीक है जो डेटा पुनर्प्राप्ति प्रक्रिया को गति देती है। यह एक सतत डेटा संरचना है जो उस तालिका से डेटा प्राप्त करने के दौरान प्रदर्शन को बढ़ाने के लिए एक तालिका (या दृश्य) से जुड़ी होती है (या देखें)।
इंडेक्स आधारित खोज को विशेष रूप से तब लागू किया जाता है जब आपके प्रश्नों में व्हेयर फ़िल्टर शामिल होता है। अन्यथा, अर्थात, WHERE- फ़िल्टर के बिना एक क्वेरी पूरे डेटा और प्रक्रिया का चयन करती है। INDEX के बिना पूरी तालिका को खोजने को टेबल-स्कैन कहा जाता है।
आपको Sql-Indexes की सटीक जानकारी स्पष्ट और विश्वसनीय तरीके से मिलेगी: इन लिंक का पालन करें:
एक सूचकांक का उपयोग कई अलग-अलग कारणों से किया जाता है। मुख्य कारण क्वेरी को गति देना है ताकि आप पंक्तियों को प्राप्त कर सकें या पंक्तियों को तेजी से सॉर्ट कर सकें। एक अन्य कारण एक प्राथमिक-कुंजी या अद्वितीय सूचकांक को परिभाषित करना है जो यह गारंटी देगा कि किसी अन्य कॉलम में समान मान नहीं हैं।
यदि आप SQL सर्वर का उपयोग कर रहे हैं, तो सबसे अच्छा संसाधनों में से एक इसकी अपनी पुस्तकें ऑनलाइन है जो इंस्टॉल के साथ आती है! यह 1 जगह है जो मैं किसी भी SQL सर्वर से संबंधित विषयों के लिए संदर्भित करूंगा।
यदि यह व्यावहारिक है "मुझे यह कैसे करना चाहिए?" इस तरह के सवाल, तो StackOverflow पूछने के लिए एक बेहतर जगह होगी।
इसके अलावा, मैं थोड़ी देर के लिए वापस नहीं आया, लेकिन sqlservercentral.com वहाँ से बाहर शीर्ष SQL सर्वर संबंधित साइटों में से एक हुआ करता था।
एक सूचकांक एक है on-disk structure associated with a table or view that speeds retrieval of rows from the table or view
। एक इंडेक्स में तालिका या दृश्य में एक या अधिक स्तंभों से निर्मित कुंजियाँ होती हैं। इन कुंजियों को एक संरचना (बी-ट्री) में संग्रहीत किया जाता है जो एसक्यूएल सर्वर को प्रमुख मूल्यों से जुड़ी पंक्ति या पंक्तियों को जल्दी और कुशलता से खोजने में सक्षम बनाता है।
Indexes are automatically created when PRIMARY KEY and UNIQUE constraints are defined on table columns. For example, when you create a table with a UNIQUE constraint, Database Engine automatically creates a nonclustered index.
यदि आप किसी प्राथमिक कुंजी को कॉन्फ़िगर करते हैं, तो डेटाबेस इंजन स्वचालित रूप से क्लस्टर इंडेक्स बनाता है, जब तक कि क्लस्टर इंडेक्स पहले से मौजूद नहीं होता है। जब आप किसी मौजूदा तालिका पर एक प्राथमिक कुंजी बाधा को लागू करने का प्रयास करते हैं और उस तालिका पर पहले से मौजूद क्लस्टर इंडेक्स होता है, तो SQL सर्वर एक गैर-अनुक्रमित इंडेक्स का उपयोग करके प्राथमिक कुंजी को लागू करता है।
कृपया इंडेक्स (क्लस्टर और नॉन क्लस्टर) के बारे में अधिक जानकारी के लिए इसे देखें: https://docs.microsoft.com/en-us/sql/relational-dat डेटाबेस/indexes/clustered-and-nonclustered-indexes-described?view= एसक्यूएल सर्वर-ver15
उम्मीद है की यह मदद करेगा!