-
반응형< 인덱스 >
1. 인덱스 종류
클러스터형(clustered index)
- 순차적으로 지정, 테이블당 1개만 생성, Primary key와unique 에만 생성가능
비클러스터형(non-clustered index)
- 테이블당 여러개 생성
2. 제약조건에 따른 인덱스
Primary key설정시 자동으로 클러스터형 인덱스가 설정된다.
uniqeu설정시 자동으로 비클러스터형 인덱스가 설정된다.
인덱스는 Primary key 에 종속적이다.
테이블생성시 pk를 설정하지 않으면 인덱스가 설정되지 않는다.
pk를 삭제하면 인덱스도 함께 삭제된다.(무슨관계?)
3. 인덱스의 내부동작
1) B-tree(balanced tree) : 데이트를 분활하여 리프노드에 저장한다.
노드를 더 추가하여 데이터의 접근성을 높인다.
데이터 추가시 클러스터형에서는 순차적으로 추가가 되지만
비클러스터형 에서는 비순차적으로 무작위 추가를 한다.
4. 인덱스 생성
디자인 > 필드선택 > 인덱스/키 설정 > 인덱스추가 > 열선택 > 인덱스 지정
-- 쿼리문으로 생성하기
-- 테스트용 테이블 만들기
CREATE TABLE userTbl
(
Seq INT NOT NULL IDENTITY(1,1),
userName nvarchar(30) NOT NULL,
birthYear int NOT NULL,
addr nvarchar(50) NOT NULL
)-- addr필드에 비고유,비클러스터 인덱스 설정
CREATE INDEX idx_userTbl_addr
ON userTbl(addr)-- Seq필드에 클러스터 인덱스 설정
CREATE CLUSTERED INDEX idx_userTbl_Seq
ON userTbl(Seq)
-- birthYear필드에 고유,비클러스터 인덱스 설정
CREATE UNIQUE INDEX idx_userTbl_birthYear
ON userTbl(birthYear)-- userName,birthYear필드에 비고유,비클러스터 인덱스 설정
CREATE NONCLUSTERED INDEX
idx_userTbl_userName_birthYear
ON userTbl(userName,birthYear)
5. 인덱스의 사용
- 사용
Where 절에서 사용되는 필드(컬럼,열)를 인덱스로 사용한다.
join에 사용되는 열에는 인덱스를 사용한다.
외래키에 인덱스를 설정하는것이 좋다.
- 비사용
데이터중복 빈도가 높은 열에는 인덱스를 사용하지 않는다.반응형'Database' 카테고리의 다른 글
DB 스터디 문서 오픈과제 쿼리 교도소 탈출하기 (0) 2008.11.06 요구사항 명세서 실체관계분석, 속성분석 이름영문화 도메인 정의 논리적 데이터 모델링 물리적데이터모델 쇼핑몰프로젝트 용어사전 (0) 2008.11.05 DB 서브쿼리 서브쿼리 서브쿼리 중요 한방쿼리 (0) 2008.10.31 DB CASE 문활용 (원래있는 값을 비교해서 가져올때) (0) 2008.10.31 DB UNIO 합집합 유니온 (0) 2008.10.31 DB MSSQL 2005를 2000으로 설정하기 (0) 2008.10.30 DB 관련 자료 요구사항명세서, 실체관계분석, 속성분석, 이름영문화, 도메인정의, 쇼핑몰프로젝트 (0) 2008.10.28 DB 쇼핑몰관련 데이터베이스 설계 프로젝트 자료 (1) 2008.10.27