일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 가장 긴 바이토닉 부분 수열 파이썬
- 역사 파이썬
- 백준 1034 램프 파이썬
- 게임 개발 파이썬
- 프로그래머스 베스트앨범
- 백준 2352 반도체 설계 파이썬
- 가장 긴 팰린드롬 파이썬
- 다중 컬럼 NOT IN
- 백준 2146 다리 만들기
- 프로그래머스 등굣길
- 다리 만들기 파이썬
- 프로그래머스 여행경로
- 반도체 설계 파이썬
- 백준 1043 거짓말 파이썬
- 백준 1613 역사
- 백준 1167 트리의 지름 파이썬
- 베스트앨범 파이썬
- 등굣길 파이썬
- SWEA
- 백준 1516 게임 개발
- 백준 11054.가장 긴 바이토닉 부분 수열
- 트리의 지름 파이썬
- 백준 1238 파티 파이썬
- 프로그래머스 순위 파이썬
- 순위 파이썬
- 프로그래머스 가장 긴 팰린드롬
- 프로그래머스 순위
- SQL SERVER 장비교체
- SQL SERVER MIGRATION
- 램프 파이썬
- Today
- Total
공부, 기록
PostgreSQL 유니크 인덱스 NULL 처리 본문
운영 중 PostgreSQL 14버전에서 유니크 인덱스에서 NULL 의 중복 입력이 가능한 것을 확인하였습니다.
CREATE UNIQUE INDEX UNIQUE_INDEX ON TABLEA (COLA, COLB)
위와 같은 인덱스가 생성되어 있는 상태에서
아래 데이터가 여러건 조회가 발생합니다.
SELECT COUNT(*) FROM TABLEA WHERE COLA = '' AND COLB IS NULL;
CREATE UNIQUE INDEX UNIQUE_INDEX_01 ON TABLEA (COLA, COLB) WHERE COLB IS NOT NULL;
CREATE UNIQUE INDEX UNIQUE_INDEX_02 ON TABLEA (COLA) WHERE COLB IS NULL;
유니크 인덱스 2개를 통하여 해당 상황은 방지할 수 있었는데
14버전 이후에 해당 기능이 변경이 되었을지 나중에 버전 업그레이드에 따른 영향도가 있을지가 걱정되어
좀 더 확인을 진행하였습니다.
15버전 부터는 UNIQUE NULLS NOT DISTINCT 옵션을 지정할 수 있습니다.
CREATE UNIQUE INDEX UNIQUE_INDEX ON TABLEA (COLA , COLB) NULLS NOT DISTINCT
이러한 기능이 추가된 것을 보아 PostgreSQL 에서는 다른 DBMS 와 유니크에 대한 NULL 접근 방식이 다른 것으로 이해하였고 위 인덱스를 추가하여 배포 진행하였습니다.
https://pganalyze.com/blog/5mins-postgres-unique-constraint-null-parallel-distinct
https://stackoverflow.com/questions/8289100/create-unique-constraint-with-null-columns
'공부 > DATABASE' 카테고리의 다른 글
PostgreSQL Auto Vacuum 정리 (0) | 2025.04.19 |
---|---|
PostgreSQL 파티션 테이블 (0) | 2025.03.29 |
PostgreSQL 대기, 잠금 (0) | 2025.03.23 |
postgreSQL Duplicate Key 영향도 (0) | 2025.03.23 |
PostgreSQL 컬럼 변경 영향도 (0) | 2025.03.23 |