반응형
Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- Level2
- 배열
- sql
- OS
- C++
- 백준
- 자바스크립트
- Level3
- typescript
- VUE
- LeetCode
- 카카오
- 동적계획법
- web
- Level1
- 코테연습
- 리트코드
- react
- Doitvue.js입문
- 고득점Kit
- 프로그래머스
- 프로그래밍
- CS
- javascript
- 파이썬
- 웹프로그래밍
- Medium
- python
- 리액트
- dp
Archives
- Today
- Total
[데이터베이스] 인덱스 본문
반응형
인덱스
인덱스란?
데이터 레코드를 빠르게 접근하기 위해 <키 값, 포인터> 쌍으로 구성되는 데이터 구조이다.
DBMS의 인덱스는 항상 정렬된 상태를 유지하기 때문에 원하는 값을 탐색하는데는 빠르지만 새로운 값을 추가하거나 삭제, 수정하는 경우에는 쿼리문 실행 속도가 느려진다. DBMS에서 인덱스는 데이터의 저장 성능을 희생하고 그 대신 데이터의 읽기 속도를 높인다
- 데이터가 저장된 물리적 구조와 밀접한 관계가 있다.
- 레코드가 저장된 물리적 구조에 접근하는 방법을 제공한다.
- 레코드의 삽입과 삭제가 수시로 일어나는 경우에는 인덱스의 개수를 최소로 하는 것이 효율적이다.
- 인덱스가 없으면 특정한 값을 찾기 위해 모든 데이터 페이지를 확이하는 TABLE SCAN이 발생한다.
- DDL을 이용해 사용자가 생성, 변경, 제거할 수 있다.
- 기본키를 위한 인덱스 = 기본 인덱스, 나머지 인덱스 = 보조 인덱스
- 레코드의 물리적 순서가 인덱스의 엔트리 순서와 일치하게 유지되도록 구성되는 인덱스를 클러스터드 인덱스라고 한다.
클러스터드 인덱스
인덱스의 키의 순서에 따라 데이터가 정렬되어 저장되는 방식이다. 기본 키 값이 비슷한 레코드끼리 묶어서 저장한다.
한 개의 릴레이션에 하나의 인덱스만 생성할 수 있다.
데이터 삽입, 삭제 발생 시 순서를 유지하기 위해 데이터를 재정렬해야한다.
넌클러스터드
인덱스의 키 값만 정렬되어 있고 실제 데이터는 정렬되지 않는 방식
한 개의 릴레이션에 여러개의 인덱스를 만들 수 있다.
종류
트리기반
B 트리 인덱스
루트 노드에서 하위 노드로 키 값의 크기를 비교해 나가면서 단말 노드에서 찾고자 하는 데이터를 검색한다.
키 값과 레코드를 가리키는 포인터들이 트리 노드에 오름차순으로 저장된다.
모든 리프 노드는 같은 레벨에 있다.
- 브랜치 블록 : 분기를 위한 목적 , 다음 단계를 가리키는 포인터를 가지고 있음
- 리프 블록: 인덱스를 구성하는 컬럼 데이터와 해당 데이터의 행 위치를 가리키는 레코드 식별자로 구성됨
B+ 트리 인덱스
단말 노드가 아닌 노드로 구성된 인덱스 세트와 단말 노드로만 구성된 순차 세트로 구분된다.
인덱스 세트에 있는 노드들 : 단말 노드에 있는 키 값을 찾아갈 수 있는 경로
순차 세트에 있는 단말 노드: 해당 데이터 레코드의 주소를 가리킨다.
반응형
'CS > 데이터베이스' 카테고리의 다른 글
[데이터베이스] SQL (0) | 2022.04.10 |
---|---|
[데이터베이스] 트랜잭션 (0) | 2022.04.09 |
[데이터베이스] 정규화 (0) | 2022.04.08 |
[데이터베이스] 관계형 데이터 베이스 (0) | 2022.04.08 |
[데이터베이스] 데이터베이스의 특징과 설계, E-R 다이어그램 (0) | 2022.04.08 |
Comments