쌩로그

H2 데이터베이스의 인덱스 확인 문법(feat Chat GPT) 본문

카테고리 없음

H2 데이터베이스의 인덱스 확인 문법(feat Chat GPT)

.쌩수. 2023. 8. 23. 00:26
반응형

목록

  1. 포스팅 개요
  2. 본론
  3. 요약

1. 포스팅 개요

JPA 기초부터 강의를 차근차근 천천히 듣고 있습니다만, 하나의 컬럼에 Unique키를 설정하는 것을 보여주셨습니다.

라이브 코딩을 따라하는 과정에서, 키에 제약조건으로 unique를 주면, 보조인덱스가 자동으로 생성되는 것이 기억났고, H2에서 index를 검색했습니다.

show index from MEMBER;

이 명령어를 H2에 실행하면, 오류를 유발합니다.
그럼 저는 과연 어디서 이 명령어를 확인했을까요..?
제가 포스팅한 곳입니다. 바로 여기인데요.

하지만, 이 명령어의 결과는 다음과 같습니다.

예 서론이 길었군요, 여튼 챗 GPT한테 물어보고, 나중에 다시 볼 저를 위해 이 포스팅을 기록합니다.

ps. 물론 저뿐만 아니라,, 다른 분에게도 도움이 된다면야 좋습니다..


2. 본론

처음엔 GPT도 제가 알고 있던 명령어와 비슷하게 알려줬습니다.

이렇게 말이죠..
달라진 건 INDEX -> INDEXES

SHOW INDEX FROM MEMBER; 

에서

SHOW INDEXES FROM MEMBER; -- 단수형에서 복수형..?

단수형에서 복수형이 되었습니다..? ;;;;
그럼에도 불구하고, 결과는 동일합니다.

다시 GPT한테 상세하게 여쭤(?)봤습니다.

이렇게 알려줍니다.

SELECT * FROM INFORMATION_SCHEMA.INDEXES WHERE TABLE_NAME = 'MEMBER';

이제야 제대로 나오네요 ㅎ

자세히 보면 인덱스이름 컬럼에 유니크 키 생성으로 인한 제약조건 이름이 나와있습니다.

데이터 베이스 스키마 자동생성 파트를 진행 중인데, persistence.xml에서 ddl-auto 옵션을 create로 줬고, 엔티티 클래스는 다음과 같이 설정했습니다.

USERNAME 컬럼에 unique(유니크) 설정을 함으로써, 보조 인덱스가 생성된 것입니다.
다음 사진은 유니크 키 설정으로 생성된 제약조건의 이름입니다.

아래 사진과 비교해보시면 좋을 거 같습니다.

유니크 키로 인해 보조인덱스가 자동으로 생성되는데, 조회된 컬럼들을 살펴보시면, SecondaryIndex(보조인덱스)라고 명시된 부분을 찾을 수 있습니다.

기본 키(Primary Key) 설정시 테이블당 하나만 가질 수 있는 클러스터링 인덱스가 자동으로 생성되고,
유니크 키(Unique Key)는 테이블당 여러개를 가질 수 있는 보조인덱스가 자동으로 생성됩니다.
따라서 다음 사진을 통해서 INDEX_TYPE_NAME을 보면, Primary key는 PRIMARY KEY라고 명시하여 클러스터링 인덱스를 가지고 있음을 암묵적으로 알려주는 것 같고요,
Unique 키에 해당하는 컬럼은 INDEX_TYPE_NAME에 UNIQUE INDEX라고 명시되어있네요

그리고 기본 키 여부도 알려주고 있습니다.

3. 요약

결론은

SELECT * FROM INFORMATION_SCHEMA.INDEXES WHERE TABLE_NAME = 'MEMBER';

이 명령어로 H2 데이터베이스 내의 테이블 인덱스를 확인할 수 있다!
입니다.

본론에서는 인덱스와 관련된 얘기도 조금 했습니다만,
이번 포스팅의 핵심은 결론입니다!

포스팅 : 8월 23일 새벽 00시즈음
주의 업데이트 : 8월 23일 오전 11시

주의

유니크 제약 조건 이름이 병맛 같이 나오기 때문에, 실제 DB에 직접 설정하는 것을 권장합니다.

728x90
Comments