ROWNUM - COUNT STOPKEY
2024. 4. 19. 15:44ㆍDBMS/PERFORMANCE
반응형
SELECT /* gather_plan_statistics */ *
FROM (
SELECT rownum AS no, last_name, salary
FROM (
SELECT last_name, salary
FROM hr.employees
ORDER BY salary DESC
)
WHERE rownum <= 10
)
WHERE no >= 1;
- COUNT STOPKEY 연산은 결과 집합의 일부 레코드만 계산하여 성능을 향상시키는 방식이다. 상위 10개의 레코드만 필요하므로 처음 10개의 레코드만 검색하고 이를 반환하여 전체 결과 집합을 검색하는 것보다 효율적일 수 있다.
- SORT ORDER BY STOPKEY 는 ORDER BY 절이 포함되어 있으며, 상위 10개의 레코드만 검색하여 정렬하여 전체 결과 집합을 정렬하는 것보다 효율적일 수 있다.
악성 코드
SELECT /* gather_plan_statistics */ *
FROM (
SELECT rownum AS no, last_name, salary
FROM (
SELECT last_name, salary
FROM hr.employees
ORDER BY salary DESC
)
)
WHERE no <= 10 AND no >= 1;
COUNT 연산은 전체 결과 집합의 레코드 수를 계산한다. 이 경우에는 전체 결과 집합의 레코드 수가 107개이며, 그 중에서 상위 10개의 레코드를 선택하여 반환한다.
결론적으로, 두 번째 실행 계획은 성능을 향상시키기 위해 COUNT와 ORDER BY 연산을 최적화한 것이다.
반응형
'DBMS > PERFORMANCE' 카테고리의 다른 글
INDEX TUNNING (0) | 2024.07.08 |
---|---|
데이터 정합성 for update (0) | 2024.07.03 |
B-tree index structure (0) | 2024.07.03 |
두 테이블 모두가 조인 컬럼을 기준으로 파티셔닝되지 않은 경우 (0) | 2024.04.18 |
Sort Merge JOIN (0) | 2024.01.28 |