SQL 튜닝의 시작 (2013년)
NESTED LOOPS JOIN에 비효율이 많지 않은 경우 효과적이다 0 0 99,999+

by 구루비스터디 PAGINATION NESTED LOOPS JOIN [2018.07.14]


NESTED LOOPS JOIN에 비효율이 많지 않은 경우 효과적이다

  • Driving Table 에서 추출된 데이터 건수와 최종 추출 데이터 건수의 차이가 크지 않는 SQL에 적용된 페이지 처리가 효과적이다.
  • 예를 들어, A B C D 네 개의 테이블을 조인한 후 결과 데이터를 추출하는 SQL 이 있다고 가정 하자.
  • 그리고 이 SQL 은 A 테이블에서 1,000,000 건을 추출하고, B 테이블과 조인 처리 후 1,000 건으로 감소하고, B 에서 추출된 1,000 건으로 C, D 테이블과 조인을 수행한 후 최종 1,000 건이 추출된다.
  • 그런데 위에서 설명한 SQL 에 페이지 처리를 적용할 경우, 한 페이지에서 보여줘야 하는 데이터 건수에 비해 많은 I/O 처리량이 발생하여 효율적인 부분범위 처리가 되지 않을 수 있다.
  • 왜냐하면, 한 페이지에서 보여줘야 하는 데이터는 SQL 의 ROWNUM 조건을 만족해야 하는데, Driving Table 에서 추출된 1,000,000 건 중 B, C, D 테이블과 조인에 성공하는 데이터 382는 1,000 건이므로, ROWNUM 조건을 만족하는 데이터를 추출하기 위해서 많은 데이터 처리가 필요하기 때문이다.
  • 따라서 페이지 처리는 Driving Table 에서 추출된 데이터가 조인을 수행하면서 많이 줄어들지 않는 경우에 효율적이다.
"데이터베이스 스터디모임" 에서 2013년에 "SQL튜닝의시작 " 도서를 스터디하면서 정리한 내용 입니다.

- 강좌 URL : http://www.gurubee.net/lecture/3835

- 구루비 강좌는 개인의 학습용으로만 사용 할 수 있으며, 다른 웹 페이지에 게재할 경우에는 출처를 꼭 밝혀 주시면 고맙겠습니다.~^^

- 구루비 강좌는 서비스 제공을 위한 목적이나, 학원 홍보, 수익을 얻기 위한 용도로 사용 할 수 없습니다.

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