인프런 커뮤니티 질문&답변

주영박님의 프로필 이미지

작성한 질문수

실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발

주문 서비스 개발

FK, 인덱스 비교 질문

해결된 질문

22.06.22 01:13 작성

·

289

0

[질문 템플릿]
1. 강의 내용과 관련된 질문인가요? (예)
2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)
3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)

[질문 내용]
엔티티 클래스 개발2에서 FK 관련 질문입니다! FK를 안걸고 인덱스를 거는 방식도 있고 시스템마다 다르다고 하셨는데, Id값은 똑같이 가지고 있고 거기에 인덱스를 거는 것인가요? 그리고 이렇게 하면 속도가 왜 더 빨라지는 것인가요?

답변 1

1

codesweaver님의 프로필 이미지

2022. 06. 22. 13:47

안녕하세요, 주영박 님! 공식 서포터즈 codesweaver 입니다.

F.K 혹은 인덱스를 건다는 것은 내부적으로 이 데이터를 항상 정렬(sort)한 상태로 관리하겠다는 뜻입니다. 데이터가 입력, 삭제, 변경 될때마다 내부적으로 순서를 다시 정렬하는 과정을 거치게 됩니다. 

 

데이터를 정렬하여 보관하는 이점은 검색속도 입니다. 일정한 순서로 정렬된 데이터는 그렇지 않은 데이터보다 효율적인 검색 알고리즘을 적용할 수 있습니다.

 

F.K는 두 테이블 사이의 제약이기에 데이터 무결을 검증하는 추가 절차가 필요합니다. 그 이후 데이터를 다시 정렬하는 과정을 거치게 됩니다. 반면 인덱스는 무결성 검증 과정 없이 정렬만 마치면 되기에 속도에서 효율적일 수 있습니다.

감사합니다.