---------------------------------
21. 릴레이션 R과 S에 대한 조인 연산의 구현 방법을 설명한 것으로 옳지 않은 것은? [2023년 국가 7급]
① 중첩루프조인(nested loop join):R과 S의 레코드들에 대한 별도의 인덱스나 정렬을 필요로 하지 않는다.
② 단일루프조인(single loop join):R과 S 중 하나의 릴레이션에 있는 레코드들은 조인 속성 값에 따라 물리적으로 정렬되어 있어야 한다.
③ 정렬-합병조인(sort-merge join):R과 S의 레코드들이 조인 속성 값에 따라 물리적으로 정렬되어 있을 때 가장 효율적이다.
④ 해시조인(hash join):R과 S의 레코드들은 조인 속성을 해시 키로 하고 동일한 해시함수를 이용해 해시되어 있어야 한다.
------------------------------------------------------
먼저, 이 문제 이의신청한 분이 있어서 읽어 보았습니다.
저는 시험에서 억울한 분이 없어야 한다는 것이 지금까지 소신이고, 적극적으로 이의신청하는 것을 주장합니다.
그리고,
이렇게 출제된 것은 처음이므로 이 문제 틀린 분들이 많을 것으로 생각하고
어떻게 이의신청할 수 있을까? 많이 생각하였지만, 글을 올리지 못하였습니다.
이미 이의신청한 분이 있고 틀린 분들이 운이 좋으면 모두 정답으로 처리될 수도 있어서
결론부터 적으면 다음과 같습니다.
--------------------------------------------
정렬(sort) | • 테이블을 정렬하면 행 순서가 원본과 다를 수 있는 테이블의 복사본 생성 • 테이블 크기가 클수록 더 많은 기억공간 필요 - 단점 |
인덱스(index) | • 테이블에서 하나 이상의 열을 사용하여 인덱스를 만들 수 있다. • 인덱스는 별도의 파일에 저장된다.(인덱스 파일) |
• 정렬과 인덱스는 데이터베이스 테이블에서 데이터 검색 속도를 향상시키는 데 사용된다.
• 단일루프조인에서는 물리적인 정렬을 이용하지 않고 인덱스를 이용하여 검색 속도를 향상시킨다.
-------------------------------------------------
추가로 좀 더 적으면
중첩루프조인(nested loop join)은 두 테이블이 모두 정렬되지 않은 상태에서 조인하는 것이고
단일루프조인(single loop join)은 두 테이블 중에 하나는 인덱스가 있는 경우에 조인하므로 이름을 단일루프조인이라고 붙인 것 같습니다.
두 조인 기본 원리는 같은데, 미세한 차이점으로 구분하기 좋아하는 분들이 이렇게 이름을 붙이는 것 같습니다.
그런데,
중첩루프조인(nested loop join)도 효율적인 조인을 위해서 후행테이블을 정렬 또는 인덱스를 구축하는 것이다. 라고 하기도 합니다.
이의신청 한다면
중첩루프조인(nested loop join):R과 S의 레코드들에 대한 별도의 인덱스나 정렬을 필요로 하지 않는다.(X)
다음처럼
중첩루프조인(nested loop join):R과 S의 레코드들에 대한 별도의 인덱스나 정렬을 필요로 한다.(O)
위에서 설명한 조인 원리는 특별한 것도 없고 시험에서 조인 문제로 많이 등장하는 자연조인일 뿐인데
이런 것을 너무 세부적으로 구분하여 이름을
중첩루프조인 또는 단일루프조인으로 구분하여 이게 도데체 뭔가? 싶을 뿐입니다.
아무튼, 정렬이나 인덱스는 효율적으로 조인하는데 필요하므로
틀린 분들 기준으로 적으면
모두 정답처리되면 행운입니다.
혹시 이 문제 정확하게 맞춘 분 있습니까?