인덱스 분석
인덱스가 비트리로 만들어져있고, 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 |