SQL Server में Index - इंडेक्स क्या है?
इंडेक्सिंग रिकॉर्ड्स को तेजी से पुनः प्राप्त करने के लिए उपयोग की जाने वाली विधि है। इंडेक्स इंडेक्स किए गए कॉलम में दिखाई देने वाले प्रत्येक मान को इंगित करता है।
इंडेक्स बनाएं
सिंटैक्स
CREATE [UNIQUE] [CLUSTERED | NONCLUSTERED] INDEX index_name
ON table_name (column1 [ASC | DESC], ..., column_n [ASC | DESC])
[INCLUDE (column1, ..., column_n)]
[WHERE condition]
[WITH (PAD_INDEX = {ON | OFF}
| FILLFACTOR = fillfactor
| SORT_IN_TEMPDB = {ON | OFF}
| IGNORE_DUP_KEY = {ON | OFF}
| STATISTICS_NORECOMPUTE = {ON | OFF}
| STATISTICS_INCREMENTAL = {ON | OFF}
| DROP_EXISTING = {ON | OFF}
| ONLINE = {ON | OFF}
| ALLOW_ROW_LOCKS = {ON | OFF}
| ALLOW_PAGE_LOCKS = {ON | OFF}
| MAXDOP = max_degree
| DATA_COMPRESSION = {NONE | PAGE | ROW})
[ON PARTITIONS ({number | range}]
[ON partition_scheme (column)
| ON filegroup | ON default_filegroup]
[FILESTREAM_ON {filegroup | partition_scheme}];
UNIQUE: वैकल्पिक, इंडेक्स कॉलम में मानों के कॉम्बिनेशन को यूनिक होना दर्शाता है।
CLUSTERED: वैकल्पिक, तार्किक क्रम को दर्शाता है जो टेबल में पंक्तियों की भौतिक व्यवस्था निर्धारित करता है (यानी इंडेक्स में फील्ड द्वारा क्रमबद्ध टेबल में रिकॉर्ड्स का क्रम)।
NONCLUSTERED: वैकल्पिक, तार्किक क्रम को दर्शाता है जो टेबल में पंक्तियों की भौतिक व्यवस्था निर्धारित नहीं करता।
index_name: उस इंडेक्स का नाम जिसे आप बनाना चाहते हैं।
table_name: उस टेबल या व्यू का नाम जिस पर इंडेक्स बनाया जाता है।
column1, ..., column_n: वे कॉलम जिनसे इंडेक्स बनाया जाता है।
ASC | DESC: कॉलम में मानों के लिए सॉर्ट ऑर्डर।
INCLUDE (column1, ..., column_n): वैकल्पिक, वह कॉलम जो मुख्य कॉलम नहीं है जिसे नॉनक्लस्टर्ड इंडेक्स के लीफ लेवल में जोड़ा जाता है।
WHERE condition: वैकल्पिक, वह शर्त जो निर्धारित करती है कि कौन सी पंक्ति इंडेक्स में शामिल होगी।
ON partition_scheme (column): वैकल्पिक, पार्टिशन स्कीम को दर्शाता है जो फाइलग्रुप निर्धारित करता है जहां पार्टिशन मैप किया गया है।
ON filegroup: वैकल्पिक, दर्शाता है कि इंडेक्स निर्दिष्ट फाइलग्रुप पर बनाया जाएगा।
ON default_filegroup: वैकल्पिक, डिफ़ॉल्ट फाइलग्रुप को दर्शाता है।
FILESTREAM_ON {filegroup | partition_scheme}: वैकल्पिक, क्लस्टर्ड इंडेक्स के लिए FILESTREAM डेटा के स्थान को दर्शाता है।
SQL Server में इंडेक्स के उदाहरण
CREATE INDEX danhba_chimuc
ON danhba (ho);
इस उदाहरण में, हम danhba_chimuc नाम का एक इंडेक्स danhba पर बनाते हैं, जिसमें ho नाम का एक फील्ड शामिल है। एक से अधिक फील्ड का इंडेक्स भी बनाया जा सकता है जैसा कि नीचे उदाहरण में दिखाया गया है।
CREATE INDEX danhba_chimuc
ON danhba (ho, ten);
यह उदाहरण danhba में danhba_chimuc नाम का इंडेक्स बनाता है, जिसमें दो फील्ड्स, ho और ten शामिल हैं। चूंकि प्रत्येक आइटम के लिए ASC या DESC निर्दिष्ट नहीं है, इंडेक्स प्रत्येक फील्ड के लिए डिफ़ॉल्ट ऑर्डर (इन्क्रीमेंटल) के साथ बनाया जाता है। यदि आप डिसेंडिंग ऑर्डर चाहते हैं, तो आप निम्न कर सकते हैं।
CREATE INDEX danhba_chimuc
ON danhba (ho DESC, ten DESC);
उपरोक्त CREATE INDEX कमांड केवल पहले और अंतिम नाम के साथ danhba_chimuc बनाता है जो डिसेंडिंग ऑर्डर में क्रमबद्ध होते हैं।
यूनिक इंडेक्स का उदाहरण
CREATE UNIQUE INDEX danhba_chimucduynhat
ON danhba (ho, ten);
यह उदाहरण danhba_chimucduynhat नाम का एक इंडेक्स danhba पर बनाता है जिसमें पहला और अंतिम नाम शामिल हैं, और यह सुनिश्चित करता है कि इन दो फील्ड्स का कॉम्बिनेशन यूनिक है। एक यूनिक क्लस्टर्ड इंडेक्स बनाना संभव है ताकि टेबल में पंक्तियों का भौतिक क्रम इंडेक्स के तार्किक क्रम द्वारा तय किया जाए।
CREATE UNIQUE CLUSTERED INDEX danhba_chimucduynhat
ON danhba (ho, ten);
इस उदाहरण में नव निर्मित इंडेक्स का नाम danhba_chimucduynhat है जिसमें दो पहला और अंतिम नाम फील्ड्स हैं, और यह टेबल में पंक्तियों के सॉर्ट ऑर्डर को भी इसके अनुसार बदलता है।
SQL Server में इंडेक्स का नाम बदलें
सिंटैक्स
sp_rename 'table_name.old_index_name', 'new_index_name', 'INDEX';
table_name: उस टेबल का नाम जिस पर इंडेक्स बनाया गया है।
old_index_name: उस इंडेक्स का नाम जिसे आप नाम बदलना चाहते हैं।
new_index_name: इंडेक्स के लिए नया नाम।
उदाहरण
sp_rename 'danhba.danhba_chimuc', 'danhba_chimuc_ten', 'INDEX';
यह उदाहरण danhba टेबल में इंडेक्स का नाम danhba_chimuc से danhba_chimuc_ten में बदलता है।
SQL Server में इंडेक्स हटाएं
सिंटैक्स
DROP INDEX table_name.index_name;
table_name: उस टेबल का नाम जिस पर इंडेक्स बनाया गया है।
index_name: हटाने के लिए इंडेक्स का नाम।
उदाहरण
DROP INDEX danhba.danhba_chimuc;
यह उदाहरण danhba_chimuc नाम के इंडेक्स को हटाता है।