Sqlserver
 sql >> डेटाबेस >  >> RDS >> Sqlserver

SQL सर्वर ढेर बनाम। संकुल सूचकांक

हीप स्टोरेज का इन हीप से कोई लेना-देना नहीं है ।

हीप का मतलब है कि रिकॉर्ड खुद ऑर्डर नहीं किए जाते हैं (यानी एक दूसरे से जुड़े नहीं हैं)।

जब आप कोई रिकॉर्ड सम्मिलित करते हैं, तो वह डेटाबेस को मिलने वाली खाली जगह में बस डाला जाता है।

हीप आधारित तालिका में एक पंक्ति को अपडेट करने से अन्य रिकॉर्ड प्रभावित नहीं होते हैं (हालांकि यह द्वितीयक अनुक्रमणिका को प्रभावित करता है)

यदि आप HEAP . पर द्वितीयक अनुक्रमणिका बनाते हैं तालिका, RID (भंडारण स्थान के लिए एक प्रकार का भौतिक सूचक) एक पंक्ति सूचक के रूप में प्रयोग किया जाता है।

क्लस्टर्ड इंडेक्स का मतलब है कि रिकॉर्ड एक B-Tree . का हिस्सा हैं . जब आप कोई रिकॉर्ड सम्मिलित करते हैं, तो B-Tree फिर से जोड़ने की जरूरत है।

एक संकुल तालिका में एक पंक्ति को अद्यतन करने से बी-ट्री को फिर से जोड़ा जा सकता है, i. इ। अन्य रिकॉर्ड में आंतरिक पॉइंटर्स को अपडेट करना।

यदि आप किसी संकुल तालिका पर द्वितीयक अनुक्रमणिका बनाते हैं, तो संकुल अनुक्रमणिका कुंजी का मान पंक्ति सूचक के रूप में उपयोग किया जाता है।

इसका मतलब है कि एक संकुल सूचकांक अद्वितीय होना चाहिए। यदि एक संकुल अनुक्रमणिका अद्वितीय नहीं है, तो एक विशेष छिपा हुआ स्तंभ जिसे uniquifier . कहा जाता है अनुक्रमणिका कुंजी में जोड़ा जाता है जो if को अद्वितीय (और आकार में बड़ा) बनाती है।

यह भी ध्यान देने योग्य है कि किसी स्तंभ पर द्वितीयक अनुक्रमणिका बनाने से मान या संकुल अनुक्रमणिका की कुंजी द्वितीयक अनुक्रमणिका की कुंजी का भाग बन जाती है।

एक संकुल तालिका पर एक अनुक्रमणिका बनाकर, आप वास्तव में हमेशा एक समग्र अनुक्रमणिका प्राप्त करते हैं

CREATE UNIQUE CLUSTERED INDEX CX_mytable_1234 (col1, col2, col3, col4)

CREATE INDEX IX_mytable_5678 (col5, col6, col7, col8)

इंडेक्स IX_mytable_5678 वास्तव में निम्नलिखित स्तंभों पर एक अनुक्रमणिका है:

col5
col6
col7
col8
col1
col2
col3
col4

इसका एक और दुष्प्रभाव है:

एक DESC संकुल तालिका पर एकल-स्तंभ अनुक्रमणिका में स्थिति SQL Server में समझ में आती है

यह सूचकांक:

CREATE INDEX IX_mytable ON mytable (col1)

इस तरह की क्वेरी में इस्तेमाल किया जा सकता है:

SELECT  TOP 100 *
FROM    mytable
ORDER BY
       col1, id

, जबकि यह एक:

CREATE INDEX IX_mytable ON mytable (col1 DESC)

इस तरह की क्वेरी में इस्तेमाल किया जा सकता है:

SELECT  TOP 100 *
FROM    mytable
ORDER BY
       col1, id DESC


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. SQL सर्वर MERGE स्टेटमेंट के लिए केस का उपयोग करें:ऑनलाइन और हिस्ट्री टेबल्स को सिंक करना

  2. देखें कि sp_execute क्या कर रहा है

  3. jdbc.SQLServerException:किसी भी उपयोगकर्ता के लिए उपयोगकर्ता के लिए लॉगिन विफल रहा

  4. SQL:वेरिएबल के आधार पर डायनेमिक कॉलम नाम चुनें

  5. संग्रहीत प्रक्रिया में लूप के समय के बीच तुलना कैसे की जा सकती है?