인조 식별자를 두어서 성능 개선을 할때 어느 정도 성능에 이득이 있는지 알수 있을까요? 0 7 904

by 루비루비루 인조 식별자 반정규화 [2017.10.03 19:14:02]


제목 없음1.png (655,125Bytes)
제목 없음2.png (996,807Bytes)

밑에 글을 보시면 두가지 테이블과 쿼리가 있는데요

글을 요약하자면 첫번째 반정규화 테이블이 성능에

도움이 된다는 말입니다.

그런데 제가 글을 아무리 읽어봐도 도움되는 부분은

2번째  형식이 조인 부하가 커서 첫번째가 더 비용이 적게든다는 얘기같은데

첫번째 형식이 왜 두번째 형식보다 비용이 더 적게 드는지 디테일하게 읽고 이해보려고 해도 모르겠네요

고수님들 부탁드립니다. 왜 비용이 적게들고 효율적인지 정확히 알수 있을까요?

by 아발란체 [2017.10.03 20:39:48]

책 설명이 부족한 것 같습니다.

예시상으로 보면, 반정규화를 했기 때문에 첫번째 질의는 굳이 주문 테이블 없이 상세 테이블를 직접보고 질의를 할 수 있습니다.

이럴 경우 조인 비용이 발생하지 않습니다.

즉 첫번째 반정규화 질의는 주문/상세 조인을 했어도 실행계획을 보면 실제 주문 테이블을 접근하지 않습니다.

SQLP에 서술형 주관식으로 나올법한 문제입니다.


by jkson [2017.10.04 09:45:55]

아발란체님 말씀대로 위와 같은 쿼리에서는 주문 테이블을 볼 필요조차 없습니다.

다만 책에서 설명하는 내용은 조인 성능 이슈에 대해 초점을 맞추고 있으므로

주문 테이블에 주문유형이 라는 컬럼이 있다고 생각하고

쿼리에 주문.주문유형 = '온라인' 이라는 조건이 추가되어 있다고 생각해보면

주문 테이블도 읽어야만 하는 상황이며 조인이 필요한 상황이 됩니다.

이때 주문일자를 상속 받은 첫번째 모델 같은 경우

쿼리에서 주문.주문일자 = '20090315' 조건을 받게 되면

주문.주문일자 = 주문상세.주문일자 조건으로 인해

주문상세.주문일자 = '20090315'가 쿼리 변환 과정을 통해

생성이 되고

주문상세 600건을 읽고 주문 쪽으로 조인이 일어나게 하면

600건만 조인하게 되고 해당 600건 중에 주문유형이 '온라인'인 건만 필터하면 됩니다.

두 번째 모델의 경우 주문일자를 상속 받지 못 했으므로

10만번의 조인을 해야만하는 상황이 되는 것이구요.

이러한 의미로 인조키 모델의 조인 성능이슈를 설명한 내용이 아닌가 생각됩니다.

책의 설명이 조금 부족하네요.


by 우리집아찌 [2017.10.05 09:56:27]

위 두분들은 연휴에 왜 나오신건가요??


by 아발란체 [2017.10.05 12:03:21]

얼.... 신끼다.. 어떻게 아셨어용? ㅋ

집에서도 할 수 있는데! 물론 사무실이지만... ㅠㅠ

 

 


by 우리집아찌 [2017.10.05 13:37:11]

저도 나왔습니다 ㅎㅎㅎ


by 우리집아찌 [2017.10.05 14:06:28]

현 프로젝트 da가 봐야할 내용이네요.. ㅎㅎㅎ


by jkson [2017.10.05 18:03:47]

저는 처가요ㅋㅋ

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