테이블 구성 질문있습니다. 0 2 1,401

by 꼭된다 [DB 기타] [2017.11.06 11:34:01]


테이블 구성하는데 질문이 있는데요.

먼저 대학생이 수강 신청한 테이블이 있습니다.

학생 인덱스 수강 과목
1 A(수학)
1 B(영어)
1 C(DB)
2 A(수학)
2 C(DB)

근데 학교 측에서 DB과목 C를 수강하는 학생에게만 알림을 보내려고 하는데 

이때 위의 테이블에서 수강 과목이 C인 쿼리를 날리는 것이 좋은지 아니면

수강 과목 학생 인덱스
C(DB) 1
C(DB) 2
C(DB) 3
C(DB) 4
A(수학) 1

이렇게 과목에 대한 수강생 목록을 따로 들고 있어서 여기서 찾는게 좋은지 궁금합니다.

결국 똑같은 건가요?

by jkson [2017.11.06 12:30:17]

단순히 위의 용도로만 사용된다면 저는 수강과목-학생 순으로 인덱스를 만들겠어요. 학생-수강과목순으로 만들면 인덱스 풀스캔일 거지만 반대의 경우 수강과목 종류가 많으면 많을 수록 효율이 좋은 range 스캔일테니까요. 다만 위의 용도 이외에도 다른 용도가 있는 테이블이라면 좀 따져보고 정해야겠죠.


by 마농 [2017.11.07 08:59:45]

테이블, PK, 인덱스 모두 별도의 개체입니다.
테이블을 두개 만드는게 아니라 테이블 하나에 인덱스를 추가로 만드는 것입니다.
검색 조건이 2가지 타입일 듯 합니다.
특정 학생이 수강하는 과목을 검색할 수도 있고
특정 과목을 수강하는 학생을 검색할 수도 있겠지요.
두가지 패턴중 한가지만 주로 사용된다면?
그 패턴으로 PK 를 만드시면 됩니다.
PK 에는 인덱스가 잇으니 별도 인덱스는 필요없구요.
두가지 패턴이 골고루 사용된다면?
PK 따로 인덱스 따로 만드셔야 합니다.

댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입