인덱스 퀴즈 해설

[40번] Unique Index Null 중복 허용

index-quiz 2025. 12. 5. 15:35

#40

문제

 

복합 컬럼 col1, col2를 대상으로 유니크 인덱스 조건이 걸린 test_table이 있다.

CREATE TABLE test_table (
    id INT AUTO_INCREMENT PRIMARY KEY,
    col1 VARCHAR(50),
    col2 VARCHAR(50),
    UNIQUE KEY uniq_col1_col2 (col1, col2)
);

 

다음 쿼리를 실행할 때 예상되는 결과를 고르시오

INSERT INTO test_table (col1, col2) VALUES ('A', NULL);
INSERT INTO test_table (col1, col2) VALUES ('A', NULL);

 

선지

 

A) 두 삽입 쿼리 모두 성공한다

B) 첫번째 삽입 쿼리는 성공하고 두번째 삽입 쿼리는 실패한다

C) 두 삽입 쿼리 모두 실패한다

 

정답

더보기

A) 두 삽입 쿼리 모두 성공한다

B) 첫번째 삽입 쿼리는 성공하고 두번째 삽입 쿼리는 실패한다

C) 두 삽입 쿼리 모두 실패한다

 

핵심 해설

 

유니크 인덱스는 NULL 중복을 허용합니다. 실제로 MySQL 공식문서의 Unique Index에 대한 서술을 보면 Unique Index 의 Null 중복을 허용하고 있음을 명시하고 있습니다.

 

특히 복합 인덱스의 동일성 판단에 있어 NULL이 포함되면 ('A', NULL) = ('A', NULL)의 결과는 곧 NULL이므로 유니크 제약조건에 위반도지 않는 결과가 나옵니다.

 

상세 해설

 

실습으로 확인해보기

문제와 같이 예시 테이블을 세팅하고 쿼리를 실행해보겠습니다.

 

두개의 삽입 쿼리 모두 실행이 잘 되는 것을 볼 수 있으며, 테이블을 조회해보아도 Unique 제약조건에 위배되지 않고 NULL 중복을 허용한 상태로 행이 삽입되어 있는 모습을 볼 수 있습니다.

Reference)

https://dev.mysql.com/doc/refman/8.4/en/create-index.html