강의

멘토링

커뮤니티

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

뎁꼼님의 프로필 이미지
뎁꼼

작성한 질문수

데이터베이스 중급(Modeling)

성적관리 연습문제 3

PK관련 질문

작성

·

276

0

.
 
안녕하세요
 
강의에서 강의개설을 위와 같이 정의하시고, PK를 Seq를 사용하지 않는 이유는 성능상의 문제라고 하셨는데요.
 
왜 성능상의 문제가 생기는지 궁금하고
PK를 저렇게 굳이 묶어서 써야하는 이유가 궁금합니다.

답변 1

0

이교준님의 프로필 이미지
이교준
지식공유자

어떤 문맥에서 제가 설명했는지 기억할 수가 없습니다. 이런 경우에는 주변테이블도 함께 보여주시면 좋을꺼같아요. 

테이블을 보니 그간 유사답변이 있었던것 같아요.

Seq는 더미컬럼이죠. PK를 잡을 수 없는 상황이 종종 있어요 특히 기준테이블같은 경우가 그렇죠. 그러나 이 테이블처럼 관계테이블은 100% PK가 존재합니다

둘째, pk는 클러스터 인덱스로 구성되기 때문에 성능이 매우 좋습니다. 예를 들어 어느 선생 강의를 찾는경우  바로 찾을 수 있는거죠. 그런데 기껏 찾은게 의미없는 seq였다면 아쉬움이 많이 남죠. 다른말로 성능 좋은 클러스터 인덱스로 찾지 못하고 인덱스가 안된 컬럼으로 찾게 되는 겁니다. 성능의 문제가 되면 결국 위에 pk로 선언한 걸럼들을 다시 인덱스로 설정해야할 수도 있습니다. 그것은 seq가 중요한 역할을 이미 차지했기 때문에 발행하는 현상이겠죠

셋째, seq가 더미이기 때문에 실제 데이터에 중복이 있을 수 있습니다. 

 

결론은 실제 중요 데이터가 pk역할을 해야  가장 완벽하고 효율적인 테이블을 설계할 수 있습니다

뎁꼼님의 프로필 이미지
뎁꼼

작성한 질문수

질문하기