728x90
반응형
인덱스
- 검색 속도를 높이기 위한 색인 기술
- JOIN / WHERE 에 사용됨
- 인덱스 없는 데이터 조회 시
- 전체 데이터 페이지의 첫 레코드 -> 마지막 레코드까지 모두 조회 == FULL SCAN
- 때문에 속도가 느림
- 그러나 INDEX를 많이 설정한다고 조회 속도가 빨라지지 않음
- INDEX는 테이블 형태로 저장하는 것임
- 즉 인덱스가 많아지면 데이터베이스 메모리를 많이 잡아 먹음
- 인덱스로 지정된 칼럼 값이 변동되면, 인덱스 테이블이 갱신되므로 느려짐
- 때문에 쿼리문 자체가 빨라질 수도 있지만, 전체적 데이터베이스 부하가 증가함
- SELECT는 빠르지만, UPDATE / INSERT / DELETE 속도는 느림
- UPDATE / DELETE 시 WHERE을 통해 데이터 조회 자체는 빠름
- 그러나 데이터 변경 / 삭제 자체는 느림
팁
- 카디널리티 : 카디널리티가 높으면 인덱스 설정에 좋은 칼럼
- 카디널리티가 높다 == 한 칼럼이 갖고 있는 값의 중복도가 낮음 (대부분 다른 값을 가짐)
- 인덱스 통해 불필요한 데이터 대부분을 걸러낼 수 있음
- 선택도: 선택도가 낮으면 인덱스 설정에 좋음
- 선택도가 높다 == 한 칼럼이 갖고 있는 값 하나로 여러 row가 찾아진다.
- 조회 활용도: 조회 활용도가 높으면 인데스 설정에 좋은 칼럼
- WHERE 문의 대상 칼럼으로 많이 활용되는지
- 수정 빈도: 수정 빈도가 낮으면 인덱스 설정에 좋은 칼럼
- 인덱스도 테이블
- 따라서 지정된 칼럼 값이 인덱스 테이블이 새롭게 갱시되어야 함
용어
- HEAP: 데이터 저장 시 내부적으로 아무런 순서 없이 저장된 데이터 저장 영역
CREATE INDEX user_idx ON user_table (user_name);
728x90
반응형
'백엔드 Backend > DB' 카테고리의 다른 글
[Ontology] PostgreSQL로 온톨로지 DB 구축 시 주의점 (1) | 2024.11.28 |
---|---|
[Ontology] 온톨로지 데이터베이스란? (2) | 2024.11.27 |
[DATABASE] 조인(JOIN) (1) | 2024.10.14 |
[DATABASE] 역정규화란? (0) | 2024.10.11 |
[DATABASE] 정규화란? (2) | 2024.10.10 |