CREATE DATABASE Hospital CREATE TABLE Patients ( id INT PRIMARY KEY, name VARCHAR(50) NOT NULL, gender VARCHAR(50) NOT NULL, age INT NOT NULL )
Primary Key인 id 열에 자동으로 클러스터드 인덱스가 생성된다.
id = 3
인 레코드를 추가한다면 물리적 순서를 유지하면서 id 컬럼에 있는 값의 오름차순으로 저장된다.한 테이블에 여러개의 인덱스 생성 가능(약 249개)
비 클러스터형 인덱스는 데이터 페이지를 건들지 않고 별도의 heap 공간에 인덱스 페이지를 생성한다.
클러스터형 인덱스는 물리적으로 로우를 재배열하는 반면 비 클러스터드 인덱스는 데이터 페이지는 정렬되지 않고 인덱스 페이지만 정렬된다.
인덱스 페이지는 키값과 RID로 구성된다.
RID
는파일 그룹 번호 - 데이터 페이지 번호 - 데이터 페이지 오프셋
으로 구성되어 있는 포인팅 정보이다.
별도의 인덱스 페이지를 만들기 때문에 용량을 더 차지하게 된다.
클러스터 인덱스는 영어 사전 책이라고 보면 된다. Happy
라는 단어를 찾고 싶으면 H
를 찾고 나머지 알파벳을 찾으면 금방 찾을 수 있다.
인덱스 페이지가 곧 데이터 페이지인 셈이다. 정렬된 페이지에서 원하는 데이터를 찾으면 그게 끝이니까.
대신 새로운 단어가 생겨서 중간에 껴 넣으려고 하면 다시 재정렬을 해야하기 때문에 데이터가 많을 수록 불리하다.
책 뒤쪽에 있는 색인이 Index Page
가 된다.
여기서의 인덱스 페이지는 책 뒤 쪽에 따로 기록되어 있다. 그렇다고 인덱스 페이지에 가면 그 곳에서 원하는 데이터를 찾을 수 있는 것은 아니다. 왜냐면 거기는 어떤 데이터가 있는지만 보여주는 곳이니까.
따라서 인덱스를 통해 데이터가 있는 주소를 알 수 있다. 그 주소로 가서 데이터를 알 수 있다.