खोज…


क्रस्टर्ड इंडेक्स बनाएं

एक गुच्छेदार सूचकांक के साथ पत्ती पृष्ठों में वास्तविक तालिका पंक्तियाँ होती हैं। इसलिए, केवल एक संकुल सूचकांक हो सकता है।

CREATE TABLE Employees
(
    ID CHAR(900),
    FirstName NVARCHAR(3000),
    LastName NVARCHAR(3000),
    StartYear CHAR(900)
)
GO

CREATE CLUSTERED INDEX IX_Clustered 
ON Employees(ID)
GO

नॉन-क्लस्टर्ड इंडेक्स बनाएं

गैर-क्लस्टर किए गए अनुक्रमणिका में डेटा पंक्तियों से अलग एक संरचना होती है। गैर-संकुल सूचकांक में गैर-संकुल सूचकांक प्रमुख मान होते हैं और प्रत्येक कुंजी मूल्य प्रविष्टि में डेटा पंक्ति का एक संकेतक होता है जिसमें कुंजी मूल्य होता है। SQL Server 2008/2012 पर अधिकतम 999 नॉन-क्लस्टर्ड इंडेक्स हो सकता है।

संदर्भ के लिए लिंक: https://msdn.microsoft.com/en-us/library/ms143432.aspx

CREATE TABLE Employees
(
    ID CHAR(900),
    FirstName NVARCHAR(3000),
    LastName NVARCHAR(3000),
    StartYear CHAR(900)
)
GO

CREATE NONCLUSTERED INDEX IX_NonClustered
ON Employees(StartYear)
GO

सूचकांक जानकारी दिखाएँ

SP_HELPINDEX tableName

दृश्य पर सूचकांक

CREATE VIEW  View_Index02
WITH SCHEMABINDING
AS 
SELECT c.CompanyName, o.OrderDate, o.OrderID, od.ProductID 
     FROM dbo.Customers C 
        INNER JOIN dbo.orders O ON c.CustomerID=o.CustomerID  
            INNER JOIN dbo.[Order Details] od ON o.OrderID=od.OrderID   
GO

CREATE UNIQUE CLUSTERED INDEX IX1 ON 
    View_Index02(OrderID, ProductID) 

ड्रॉप इंडेक्स

DROP INDEX IX_NonClustered ON Employees

रिटर्न का आकार और विखंडन सूचकांक

sys.dm_db_index_physical_stats (   
    { database_id | NULL | 0 | DEFAULT }  
  , { object_id | NULL | 0 | DEFAULT }  
  , { index_id | NULL | 0 | -1 | DEFAULT }  
  , { partition_number | NULL | 0 | DEFAULT }  
  , { mode | NULL | DEFAULT }  
)  


Sample :

SELECT * FROM sys.dm_db_index_physical_stats  
    (DB_ID(N'DBName'), OBJECT_ID(N'IX_NonClustered '), NULL, NULL , 'DETAILED');  

सूचकांक का पुनर्गठन और पुनर्निर्माण करना

avg_fragmentation_in_percent value सुधारात्मक कथन
> 5% और <= 30% पुनर्निर्माण करना
> 30% पुनर्निर्माण
ALTER INDEX IX_NonClustered ON tableName REORGANIZE;  


ALTER INDEX ALL ON Production.Product
 REBUILD WITH (FILLFACTOR = 80, SORT_IN_TEMPDB = ON,
          STATISTICS_NORECOMPUTE = ON);

किसी तालिका पर सभी अनुक्रमितों का पुनर्निर्माण या पुनर्गठन करें

अनुक्रमणिका अनुक्रमणिका को निम्न कथन का उपयोग करके किया जाता है

ALTER INDEX All ON tableName REBUILD;

यह इंडेक्स को ड्राप करता है और फ्रिक्सेशन को हटाते हुए इसे रीक्रिएट करता है, डिस्क स्पेस को रिकॉल करता है और इंडेक्स पेज को रीक्रिएट करता है।

एक भी एक सूचकांक का उपयोग कर पुनर्गठन कर सकते हैं

ALTER INDEX All ON tableName REORGANIZE;

जो न्यूनतम सिस्टम संसाधनों और डीफ़्रैग्मेन्ट का उपयोग करेगा, पत्ती-स्तर के पन्नों को तार्किक, बाएं से दाएं, पत्ती नोड्स के क्रम से मिलान करने के लिए भौतिक रूप से पुन: क्रमबद्ध करके तालिकाओं और विचारों पर पत्ती के स्तर और गैर-अनुक्रमित अनुक्रमित पत्तों का उपयोग करता है।

सभी सूचकांक डेटाबेस का पुनर्निर्माण करें

EXEC sp_MSForEachTable 'ALTER INDEX ALL ON ? REBUILD'

सूचकांक जांच

आप "SP_HELPINDEX Table_Name" का उपयोग कर सकते हैं, लेकिन Kimberly Tripp में एक संग्रहीत कार्यविधि है (जो यहां पाई जा सकती है ), जो बेहतर उदाहरण है, क्योंकि यह अनुक्रमणिकाओं के बारे में अधिक दिखाता है, जिसमें कॉलम और फ़िल्टर परिभाषा शामिल हैं, उदाहरण के लिए:
उपयोग:

USE Adventureworks 
EXEC sp_SQLskills_SQL2012_helpindex 'dbo.Product'

वैकल्पिक रूप से, टिबोर काराज़ी में एक संग्रहीत प्रक्रिया है ( यहां पाया गया )। बाद में सूचकांक के उपयोग के बारे में भी जानकारी दिखाएगा, और वैकल्पिक रूप से सूचकांक सुझावों की एक सूची प्रदान करेगा। उपयोग:

USE Adventureworks 
EXEC sp_indexinfo 'dbo.Product' 


Modified text is an extract of the original Stack Overflow Documentation
के तहत लाइसेंस प्राप्त है CC BY-SA 3.0
से संबद्ध नहीं है Stack Overflow