데이터베이스 프로그래밍을 하시는 모든 전문가 분들께 고견을 묻습니다.
RDB 같은 경우 데이터베이스를 정규화 혹은 최적화 하고, OUTER JOIN 등을 쿼리문에 많이 쓰게 되는데, 사실상 속도에는 크게 영향이 없는 것으로 알고 있습니다.
그러나 파다독스와 같은 경우에는 RDB와 같이 OUTER JOIN을 쓰게 되면 쿼리 속도가 많이 늦어지는 것으로 보입니다.
사실상 느낌이지 통계적인 데이터라더든가, 전문적인 지식은 거의 없습니다.
여러 전문가님들의 고견을 듣고 싶습니다. OUTER JOIN을 썼을 때 어느정도로 속도가 떨어지는지, 아울러 테이블에 데이터 갯수가 몇개 이상일 경우에 쿼리 속도에 큰 영향이 미치는지 알고 싶습니다.
또한 인덱스 설계가 잘 되었을 경우 처리속도가 과연 개선될 것인지에 대해서도 여쭙고 싶습니다.
고수님들의 고견을 들려 주십시오.
감사합니다.
A 테이블, B테이블, C테이블을 조인을 걸었을때
아웃조인의 방향은 A -> B -> C 이렇다면...
이콜조인일때..
A 테이블의 쿼리에 의한 자료가 10개이고
A테이블의 각각의 레코드에 의해 B테이블이 10개가 검색되고
각각의 B테이블에 의해 C테이블이 10개가 검색이 된다면
아웃조인일때
A : 10개, B : 50, C: 100
이런식으로 불어날수 있다는 것이겠죠.. 이래서 속도가 늦어지는 걸로
알고 있습니다..만약에 이콜조인과 아웃조인의 조인을 거는 비용이 같을수도
있습니다.. 이럴때는 속도에 차이가 거의 없는걸로 알고 있구요..
하나의 테이블이 가지고 있는 레코드의 수는 쿼리가 인덱스를 태웠을떄
"얼마만큼의 데이타를 정렬하는가"가 속도의 차이라고 봅니다..
레코드가 많으면 그만큼 많이 정렬을 하겠지요..정렬한후에는 레코드의 수가
특정 레코드를 찾는데 시간을 더 오래걸리게는 하겠지만 그렇게 오래걸리지는
않는것 같습니다..다른 테이블과의 조인시에 각각의 테이블이 어떤
인덱스를 타느냐 에 따라 속도가 많이 차이 나는 것이겠지요..
인덱스만 원하는데로 잘 타준다면 쿼리 속도는 거의 문제가 되지 않는다고
봅니다.. 문제는 인덱스가 내가 원하는데로 안타줘서 그게 문제지요..
그래서 디비 설계시에 인덱스도 다 만들어 놓고 프로그램을 짜는게 좋습니다..
나중에 인덱스를 추가하면 다른 인덱스를 탈지도 모르니깐요..
참고로 인덱스 잘 태워 줬더니 1분이 넘게 걸리는 쿼리가 무지하게 빨라지는
것을 봤습니다...여기까지가 제가 알고 있는 것입니다.
틀린 부분이 있을지도 모르겠네요..있다면 지적해 주시면 감사...~~
날림으로 책을 봤더니 기억이 가물가물하네요.. 의미가 잘 전달 됐음 하네요.
좀더 궁금 하시다면 메일을 날려주셈...~~