1. 인덱스(index)란?
검색을 빠르게 하기 위해 사용되는 개념
이는 번호라기 보다는 빠른 검색을 위한 보조(추가) 자료구조이다.
이와 같이 인덱스 파일만 별도로 구성하고 데이터 파일을 참조하는 형태로 구성된다.
이 인덱스는 고정된 자료구조가 아닌, CUD가 발생되면 인덱스가 재구성 된다. -> 속도 하락으로 이어짐
2. 약점
인덱스를 위해 추가 공간이 사용될 수 있다.
인덱스 생성, 수정에 오버해드가 발생할 수 있다.
CUD의 속도가 하락될 수 있다.
이 인덱스를 사용하면 검색이 빠르지만 연속적인 범위를 읽기가 어렵다. 이 range search시에는 보조 인덱스 (double / linked list)로 보완할 수 있다
약점으로는 데이터의 추가 패턴에 따라 트리 모양에 skrew가 생길 수 있다.
저장되는 데이터가 많아지면 Tree의 깊이가 늘어나게 되어 검색속도가 느려진다
-> 파티셔닝 / 샤딩 (데이터 범위 조절 / 데이터 나누기)를 통해 해결할 수 있다.
3. 인덱스와 컬럼간의 관계
스키마에 정의된 키는 기본적으로 인덱스가 달린다
-> MYSQL - PK, FK
-> Oracle - PK, UK
하지만 일반 컬럼에 명시적으로 인덱스를 달아야 할 땐 Create index문 사용하면 가능하다.
인덱스는 하나 이상의 컬럼으로 구성될 수 있는데 갯수에 따라 다음과 같은 이름이 붙는다.
- 단일 인덱스
- 단일 컬럼으로 구성된 인덱스
- 복합(결합) 인덱스
- 여러 개의 컬럼으로 구성된 인덱스
4. Join
여러 테이블을 합치는 테이블 단위 연산이다. 다음과 같은 환경에서 각 종류의 조인에 대해 어떤 의미를 갖는지 확인해보자.
Driving table : 직원 테이블, Driven table : 부서 테이블
a. 표준 조인
1. Inner Join
- 직원 중 부서가 없는 직원, 직원이 없는 부서를 누락시킨다.
2. Left Join
- 직원 중 부서가 없는 직원을 노락시키지 않는다 (직원이 존재하지 않는 부서를 누락시킨다)
3. Right Join
- 부서 중 직원이 없는 부서를 누락시키지 않는다 (부서가 존재하지 않는 직원을 누락시킨다)
4. Full Join
- 모두 누락시키지 않는다.
- MYSQL은 공식적으로 지원하지 않지=아서 Union을 통해 구현해야한다.
b. 비표준 조인
1. Cartesian Product(cross join)
- 두 릴레이션을 그냥 곱해서 만들어진 조인형태(즉 모든 경우의 수 / driving table의 레코드 수 n x driven table의 레코드 수 m = n x m)
2. Equi-Join (Theta Join)
- Cartesian Product를 통해 만들어진 릴레이션 중 실제 있는 것만 필터링한 조인
3. Non-equi join
- Equi-Join의 여집합
4. Self Join
- 동일한 테이블을 기준으로 조인
'학교 공부 > 데이터베이스' 카테고리의 다른 글
오라클의 조인 타입 / 표준 조인과 비표준 조인의 차이점 (0) | 2021.05.05 |
---|---|
1.트랜잭션의 4대 특징, ACID (2) | 2021.05.05 |
RDBMS의 연산과 키 (0) | 2021.04.15 |
RDBMS의 정의, 외래키, 스키마 정의 (0) | 2021.04.14 |
정형 / 반정형 / 비정형 데이터란? (0) | 2021.04.14 |