728x90
반응형
SI 프로젝트 수행 중 대량 데이터가 저장되어 있는 테이블의 조회 속도가 너무 느려서 Index를 설정했었다.
그런데 Index를 설정 해도 여전히 느렸는데 이유를 알고 보니 중복 값이 너무 많았었다.
PK이지만 중복값이 많을때에는 아무리 인덱스를 걸어도 제 속도가 안 나오는 거 같았다.
그래서 다른 컬럼에 인덱스를 걸어서 다중 칼럼 인덱스로 인덱스를 설정 후 보다 나은 검색속도를 보였던 것을 기억한다.
그래서 아래의 내용을 정리해 보고자 한다.
PostgreSQL에서 특정 컬럼에 중복값이 많으면 검색 속도가 느려질 수 있다.
인덱스는 중복값이 적을 때 더 효율적으로 작동한다.
중복값이 많으면 인덱스의 선택성이 낮아져서 검색 성능이 저하될 수 있다.
이를 해결하기 위해 다음과 같은 방법을 고려할 수 있다:
- 다중 컬럼 인덱스: 중복값이 많은 칼럼과 다른 칼럼을 함께 인덱싱하여 선택성을 높인다.
- 클러스터링: 테이블을 특정 인덱스를 기준으로 클러스터링 하여 데이터의 물리적 순서를 변경한다.
- 파티셔닝: 테이블을 파티셔닝하여 데이터의 범위를 나누고 검색 범위를 줄인다.
예를 들어, 다중 컬럼 인덱스를 생성하는 방법은 다음과 같다:
CREATE INDEX idx_multi_column ON table_name (column1, column2);
클러스터링을 사용하는 방법은 다음과 같다:
CLUSTER table_name USING idx_multi_column;
파티셔닝을 사용하는 방법은 다음과 같다:
CREATE TABLE table_name (
column1 type,
column2 type,
...
) PARTITION BY RANGE (column1);
CREATE TABLE table_name_part1 PARTITION OF table_name FOR VALUES FROM (start_value) TO (end_value);
CREATE TABLE table_name_part2 PARTITION OF table_name FOR VALUES FROM (start_value) TO (end_value);
이러한 방법들을 통해 검색 성능을 개선할 수 있다.
- 끝 -
728x90
반응형
'플젝 구현내용 정리' 카테고리의 다른 글
공공기관과 TCP/IP 연계 내용 정리 (0) | 2024.09.03 |
---|---|
TCP/IP 4계층 모델로 AWS 인프라를 구현 (0) | 2024.09.03 |
CentOS와 UbuntuOS 선정 하기 (1) | 2024.09.03 |
NoSQL관련 PoC 사례 정리 (0) | 2024.09.03 |
프로젝트에서 쿠키(Cookie)와 세션(Session)을 적용한 사례 정리 (0) | 2024.09.03 |