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

SQL सर्वर अनुक्रमणिका - आरोही या अवरोही, इससे क्या फर्क पड़ता है?

यह मुख्य रूप से तब मायने रखता है जब समग्र अनुक्रमणिका के साथ प्रयोग किया जाता है:

CREATE INDEX ix_index ON mytable (col1, col2 DESC);

दोनों के लिए इस्तेमाल किया जा सकता है:

SELECT  *
FROM    mytable
ORDER BY
        col1, col2 DESC

या:

SELECT  *
FROM    mytable
ORDER BY
        col1 DESC, col2

, लेकिन इसके लिए नहीं:

SELECT  *
FROM    mytable
ORDER BY
        col1, col2

एक कॉलम पर एक इंडेक्स को दोनों तरीकों से क्रमबद्ध करने के लिए कुशलतापूर्वक उपयोग किया जा सकता है।

विवरण के लिए मेरे ब्लॉग में लेख देखें:

  • अवरोही अनुक्रमणिका

अपडेट करें:

वास्तव में, यह एकल स्तंभ अनुक्रमणिका के लिए भी महत्वपूर्ण हो सकता है, हालांकि यह इतना स्पष्ट नहीं है।

क्लस्टर टेबल के कॉलम पर एक इंडेक्स की कल्पना करें:

CREATE TABLE mytable (
       pk INT NOT NULL PRIMARY KEY,
       col1 INT NOT NULL
)
CREATE INDEX ix_mytable_col1 ON mytable (col1)

col1 . पर अनुक्रमणिका col1 . के आदेशित मान रखता है पंक्तियों के संदर्भ के साथ।

चूंकि तालिका को क्लस्टर किया गया है, पंक्तियों के संदर्भ वास्तव में pk . के मान हैं . उन्हें col1 . के प्रत्येक मान के भीतर भी ऑर्डर किया जाता है ।

इसका मतलब यह है कि इंडेक्स के पत्ते वास्तव में (col1, pk) . पर ऑर्डर किए जाते हैं , और यह प्रश्न:

SELECT  col1, pk
FROM    mytable
ORDER BY
        col1, pk

छँटाई की आवश्यकता नहीं है।

यदि हम निम्नलिखित के रूप में अनुक्रमणिका बनाते हैं:

CREATE INDEX ix_mytable_col1_desc ON mytable (col1 DESC)

, फिर col1 . के मान अवरोही क्रम में क्रमबद्ध किया जाएगा, लेकिन pk . के मान col1 . के प्रत्येक मान के भीतर आरोही क्रम में लगाया जाएगा।

इसका मतलब है कि निम्नलिखित क्वेरी:

SELECT  col1, pk
FROM    mytable
ORDER BY
        col1, pk DESC

ix_mytable_col1_desc . द्वारा परोसा जा सकता है लेकिन ix_mytable_col1 . द्वारा नहीं ।

दूसरे शब्दों में, जो कॉलम CLUSTERED INDEX . बनाते हैं किसी भी टेबल पर हमेशा उस टेबल पर किसी अन्य इंडेक्स के पीछे वाले कॉलम होते हैं।



  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 सर्वर में एकाधिक पंक्तियों से टेक्स्ट को एक टेक्स्ट स्ट्रिंग में कैसे संयोजित करें

  2. अनुसूची, सारणी की सीमाओं से बाहर थी। (Microsoft.SqlServer.smo)

  3. SQL सर्वर में चेक बाधा क्या है - SQL सर्वर / TSQL ट्यूटोरियल भाग 82

  4. SQL सर्वर (T-SQL) में एक डेटाबेस मेल प्रोफ़ाइल बनाएँ

  5. SQL सर्वर (T-SQL) में फ़ोन नंबर प्रारूपित करें