이번시간엔 인덱스 파일을 확인 하는 방법에 대해 포스팅 하고자 합니다.
이전과 같이 SQL SERVER에서 제공하고 있는 'Northwind' 샘플 DB를 통해 진행하겠습니다.
인덱스 ID 확인
SELECT *
FROM SYS.indexes
WHERE object_id = OBJECT_ID('Orders')
AND name = 'PK_Orders'
조회하고 싶은 인덱스의 id 값을 확인하기 위해 위 쿼리로 인덱스 상세정보를 조회합니다.
인덱스 파일 ID, 페이지 ID 값 확인
DBCC Ind(Northwind, Orders,1)
DB명, 테이블명, 인덱스 (위 쿼리로 확인한 ID값) 을 차례로 넣어주면 아래와 같은 결과를 얻을 수 있습니다.
이 아래 데이터 가운데, INDEXLEVEL = 0인 데이터가 리프 페이지임을 의미합니다.
아래 값중에 첫번째 리프 페이지 값은 PrevPagePID(이전페이지)가 0이면서 IndexLevel이 0(리프페이지)인 568번이 첫번째 페이지임을 확인할 수 있습니다.
인덱스 페이지 조회
DBCC PAGE(Northwind, 1, 568,3)
DB명칭, FILE ID , PAGE ID, 조회방법(주로 3을 사용) 을 통해 페이지 조회가 가능합니다.
아래와 같은 결과를 얻을 수 있습니다. ORDERID 순서로 저장되어 있으며, 클러스터 키로써 모든 데이터컬럼을 저장하고 있습니다.
select top 2 * from Orders ORDER BY OrderID
위 쿼리를 통해 실제 데이터 저장된 위치와 조회결과가 동일함을 확인할 수 있습니다.
DBCC 실행이 완료되었습니다. DBCC에서 오류 메시지를 출력하면 시스템 관리자에게 문의하십시오.
PAGE: (1:568)
Slot 0 Column 1 Offset 0x4 Length 4 Length (physical) 4
OrderID = 10248
Slot 0 Column 2 Offset 0x8 Length 10 Length (physical) 10
CustomerID = VINET
Slot 0 Column 3 Offset 0x12 Length 4 Length (physical) 4
EmployeeID = 5
Slot 0 Column 4 Offset 0x16 Length 8 Length (physical) 8
OrderDate = 1996-07-04 00:00:00.000
Slot 0 Column 5 Offset 0x1e Length 8 Length (physical) 8
RequiredDate = 1996-08-01 00:00:00.000
Slot 0 Column 6 Offset 0x26 Length 8 Length (physical) 8
ShippedDate = 1996-07-16 00:00:00.000
Slot 0 Column 7 Offset 0x2e Length 4 Length (physical) 4
ShipVia = 3
Slot 0 Column 8 Offset 0x32 Length 8 Length (physical) 8
Freight = $32.3800
Slot 0 Column 9 Offset 0x4c Length 50 Length (physical) 50
ShipName = Vins et alcools Chevalier
Slot 0 Column 10 Offset 0x7e Length 36 Length (physical) 36
ShipAddress = 59 rue de l''Abbaye
Slot 0 Column 11 Offset 0xa2 Length 10 Length (physical) 10
ShipCity = Reims
Slot 0 Column 12 Offset 0x0 Length 0 Length (physical) 0
ShipRegion = [NULL]
Slot 0 Column 13 Offset 0xac Length 10 Length (physical) 10
ShipPostalCode = 51100
Slot 0 Column 14 Offset 0xb6 Length 12 Length (physical) 12
ShipCountry = France
Slot 0 Offset 0x0 Length 0 Length (physical) 0
KeyHashValue = (793389adc214)
Slot 1 Offset 0x122 Length 176
Record Type = PRIMARY_RECORD Record Attributes = NULL_BITMAP VARIABLE_COLUMNS
Record Size = 176
Memory Dump @0x000000A936D78122
0000000000000000: 30003a00 09280000 54004f00 4d005300 50000600 0.:. (..T.O.M.S.P...
0000000000000014: 00000000 0000b189 00000000 0000db89 00000000 ....................
0000000000000028: 0000b689 00000100 000084c5 01000000 00000e00 ....................
000000000000003C: 00080600 70008a00 98009800 a200b000 54006f00 ....p...........T.o.
0000000000000050: 6d007300 20005300 70006500 7a006900 61006c00 m.s. .S.p.e.z.i.a.l.
0000000000000064: 69007400 e4007400 65006e00 4c007500 69007300 i.t...t.e.n.L.u.i.s.
0000000000000078: 65006e00 73007400 72002e00 20003400 38004d00 e.n.s.t.r... .4.8.M.
000000000000008C: fc006e00 73007400 65007200 34003400 30003800 ..n.s.t.e.r.4.4.0.8.
00000000000000A0: 37004700 65007200 6d006100 6e007900 7.G.e.r.m.a.n.y.
Slot 1 Column 1 Offset 0x4 Length 4 Length (physical) 4
OrderID = 10249
Slot 1 Column 2 Offset 0x8 Length 10 Length (physical) 10
CustomerID = TOMSP
Slot 1 Column 3 Offset 0x12 Length 4 Length (physical) 4
EmployeeID = 6
Slot 1 Column 4 Offset 0x16 Length 8 Length (physical) 8
OrderDate = 1996-07-05 00:00:00.000
Slot 1 Column 5 Offset 0x1e Length 8 Length (physical) 8
RequiredDate = 1996-08-16 00:00:00.000
Slot 1 Column 6 Offset 0x26 Length 8 Length (physical) 8
ShippedDate = 1996-07-10 00:00:00.000
Slot 1 Column 7 Offset 0x2e Length 4 Length (physical) 4
ShipVia = 1
Slot 1 Column 8 Offset 0x32 Length 8 Length (physical) 8
Freight = $11.6100
Slot 1 Column 9 Offset 0x4c Length 36 Length (physical) 36
ShipName = Toms Spezialitäten
Slot 1 Column 10 Offset 0x70 Length 26 Length (physical) 26
ShipAddress = Luisenstr. 48
Slot 1 Column 11 Offset 0x8a Length 14 Length (physical) 14
ShipCity = Münster
Slot 1 Column 12 Offset 0x0 Length 0 Length (physical) 0
ShipRegion = [NULL]
Slot 1 Column 13 Offset 0x98 Length 10 Length (physical) 10
ShipPostalCode = 44087
Slot 1 Column 14 Offset 0xa2 Length 14 Length (physical) 14
ShipCountry = Germany
'SQL SERVER' 카테고리의 다른 글
SQL SERVER clustered index , nonclustered index (0) | 2022.04.27 |
---|---|
SQL SERVER 비용이 높은 쿼리 보기 (fT. dm_exec_query_stats) (0) | 2022.02.20 |
SQL SERVER 프로파일 쿼리로 실행하기 (0) | 2022.02.16 |
SQL SERVER 데드락(lock) 조회하기 (0) | 2022.02.14 |
SQL SERVER 인덱스 탐색방법 (INDEX SEEK, INDEX SCAN) (0) | 2022.02.12 |
댓글