MySQL에서 기본키 없이 테이블 생성이 가능한 이유는 뭘까?

Alex·2025년 3월 7일
0

CS를 공부하자

목록 보기
53/74

MySQL 공식 문서를 보면, 세가지 상황을 살펴볼 수 있다.

기본키를 정의했을 때

이때는 이노디비가 기보키를 클러스터링 키로 사용한다.

기본키는 없지만, 유니크 키가 있을 때

이노디비가 첫번째 유니크 키를 찾아서 해당 키를 클러스터링 인덱스로 사용한다.

둘다 없을때

이노디비는 내부적으로 숨겨진 클러스터링 인덱스를 만든다. 이 인덱스에는 6바이트 길이의 행 ID값이 포함된다(ROW_ID).

이노디비는 애초에 클러스터드 인덱스에 따라 데이터를 물리적으로 정렬을 하는 구조라, 이렇게 작동을 하는 것으로 보인다.

클러스터드 인덱스가 왜 조회 속도를 높여줘?

클러스터드 인덱스를 검색하면, 리프노드에 데이터를 담고 있기 때문에 빠르게 조회가 가능하다(세컨더리 인덱스는 리프노드에 클러스터드 인덱스 key값을 갖고 있다)

참고로, 프라이머리 키가 길면 세컨더리 인덱스가 더 많은 공간을 차지하게 되기 때문에, pk키를 짧게 하는 게 좋다.

profile
답을 찾기 위해서 노력하는 사람

0개의 댓글