수색…


클러스터 된 인덱스 만들기

클러스터 된 인덱스를 사용하면 리프 페이지에 실제 테이블 행이 포함됩니다. 따라서 클러스터형 인덱스는 하나만있을 수 있습니다.

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 값 시정 명령서
> 5 % 및 <= 30 % 재개발
> 30 % REBUILD
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'

또는 Tibor Karaszi는 저장 프로 시저 ( 여기 에서 찾을 수 있습니다 )가 있습니다. 나중에 인덱스 사용에 대한 정보도 표시되며 선택적으로 인덱스 제안 목록을 제공합니다. 용법:

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