인덱스(1)

Hyuntae Jung·2022년 7월 28일
0

MS SQL

목록 보기
30/41
post-thumbnail

1. INDEX 기본

: 대량의 데이터에 INDEX를 설정하여 데이터 접근 시간을 줄여줄 수 있다.

2. SQL Server 메모리 구조

Page
: 데이터를 저장하는 기본 단위(8kb)

페이지 종류

  • 데이터 페이지 : 데이터를 저장하기 위한 페이지
  • 인덱스 페이지 : 인덱스를 저장하는 페이지
  • Header: 이전페이지와 다음페이지의 정보가 포함
  • Data rows: 실제 데이터가 저장 되는 영역
  • Row offset: 각행의 첫번째 바이트가 페이지의 시작에서 얼마나 떨어져 있는지에 대한 정보를 포함하고 있다.

Extent
: 테이블이나 인덱스가 저장되는 기본단위, 8개의 페이지가 모여서 하나의 Extent가 된다.

  • 단일 익스텐트 : 하나의 개체만 할당된 익스텐트
  • 혼합 익스텐트 : 하나 이상의 개체의 페이지가 들어 있는 익스텐트

3. INDEX의 구조

: 인덱스는 B-tree구조로 구성된다.

4. INDEX 유형

4.1. Clustered index

: 원하는 컬럼에 Clustered index를 만들게 되면 물리적으로 데이터를 정렬한다.(DEFAULT: ASC)

  • 한테이블에 하나의 Clustered index만 만들 수 있다.
  • 기본키(PK)를 만들게되면 기본키에 Clustered index가 만들어진다. (기본키에는 Non clustered index도 만들 수 도 있다.)

4.2. Non clustered index

:원하는 컬럼에 Non clustered index를 만들게 되면, 데이터페이지의 위치정보를 인덱스로 구성하게된다.(물리적의 데이터의 위치를 바꾸지 않는다)

  • 한테이블에 만들 수 있는 Non clustered index는 여러개가 가능
  • 기본적으로 Clustered index 보다 검색 속도가 느리다.

5. INDEX 정보 확인

CREATE TABLE tbl01(
	aa INT PRIMARY KEY,
	bb INT,
	cc INT 
);


EXEC SP_HELPINDEX tbl01;

인덱스에 대한 정보를 확인하기 위한 프로시저는 SP_HELPINDEX이다.

CREATE TABLE tbl02(
	aa INT PRIMARY KEY,
	bb INT UNIQUE,
	cc INT UNIQUE,
	dd INT
);

EXEC SP_HELPINDEX tbl02;

UNIQUE 제약 조건으로 설정하게 되면 Non clustered index 자동으로 생성

CREATE TABLE tbl03(
	aa INT PRIMARY KEY NONCLUSTERED,
	bb INT UNIQUE,
	cc INT UNIQUE,
	dd INT
);

EXEC SP_HELPINDEX tbl03;

PK에도 Non clustered index를 지정할 수 있다.

강의: ms sql 2014 제대로 배우기 2

0개의 댓글