본문 바로가기
MS-SQL

인덱스 분석

by kcj3054 2022. 4. 4.

인덱스 분석

  • 인덱스가 비트리로 만들어져있고, INSERT를 하면 인덱스를 추가할 수 있다는 것을 알 수 있는데 실제로 인덱스 내부까지는 확인하지 못했다 이것을 확인해보는 시간이다..

  • Northwind라는 데이터를 바탕으로 작성

임시 테이블( 인덱스 테스트용)을 만들고 데이터를 넣기

USE Northwind;

-- DB 정보 살펴보기
EXEC sp_helpdb 'Northwind';

--임시 테이블 만들자 (인덱스 테스트 용)

CREATE TABLE Test
(
    EmployeeId            INT NOT NULL,
    LastName            NVARCHAR(20) NULL,
    FirstName            NVARCHAR(20) NULL,
    HireDate            DATETIME NULL
);
GO 

INSERT INTO Test
SELECT EmployeeId, LastName, FirstName , HireDate
FROM Employees


SELECT *
FROM Test;

인덱스 번호 찾기

-- FILLFACTOR (리프 페이지 공간 1%만 사용)
-- PAD_INDEX (FILLFACTOR 중간 페이지 적용)
CREATE INDEX Test_Index ON Test(LastName)
WITH (FILLFACTOR = 1, PAD_INDEX = ON)
GO

--인덱스 번호 찾기
SELECT index_id, name
FROM sys.indexes
WHERE object_id = object_id('Test')

  • Test테이블의 index_id랑 name을 찾는다 id가 0번 2번을 찾았다.

인덱스 정보보기 + HEAP RID?

--인덱스 번호 찾기
SELECT index_id, name
FROM sys.indexes
WHERE object_id = object_id('Test')

-- 2번 인덱스 정보 보기 

DBCC IND('Northwind', 'Test', 2);


-- indxLevel에서 제일 하위가 0이다, 여기서는 ROOT가2번이다. ROOT(2) -> Branch(1) -> Leaf(0)

-- HEAP RID ([페이지 주소(4)[파일ID(2)][슬롯번호(2)] 조합한 ROW식별자 )
-- TABLE[         {Page}            {Page}   {Page} ] , RID를 이용해서 어떤 페이지의 어떤 ID를 가졌는지 찾아 갈 수 있다.
DBCC PAGE('Northwind', 1/*파일 번호*/, 480 /*페이지 번호*/, 3/*출력옵션*/);

출처

-- https://github.com/Microsoft/sql-server-samples/tree/master/samples/databases/northwind-pubs
-- 루키스님의 C# DB강의를 학습 후 작성하였습니다.

'MS-SQL' 카테고리의 다른 글

Clustered vs NonClustered  (0) 2022.04.05
복합인덱스  (0) 2022.04.05
패턴매칭_수치연산  (0) 2022.04.05
데이터베이스_특징_트랜젝션_락  (0) 2022.04.04
MS -SQL?  (0) 2022.04.04