/*+ ordered use_nl */ 힌트를 사용하면 성능이 좋아질 수도 있지만, 반대로 성능이 급격히 나빠질 수도 있습니다.
힌트는 옵티마이저가 선택하는 기본 실행 계획보다 더 나은 것을 사람이 직접 제시할 수 있을 때만 효과적입니다.
예:
SELECT /*+ ordered use_nl */
a.*, b.*
FROM small_table a, large_table b
WHERE a.key = b.key
;
예: 아래는 매우 비효율적인 경우
SELECT /*+ ordered use_nl */
a.*, b.*
FROM big_table a, other_big_table b
WHERE a.id = b.id
이 경우, 옵티마이저는 Hash Join이나 Merge Join을 원할 수 있지만 힌트가 강제로 비효율적인 방법을 사용하게 합니다.
| 상황 | 추천 여부 |
| 옵티마이저가 잘못된 실행계획을 선택할 때 | ✅ 힌트 사용 고려 |
| 조인 순서나 방식이 확실히 효율적일 때 | ✅ 힌트 사용 고려 |
| 기본 실행 계획이 잘 나올 때 | ❌ 힌트 사용 자제 |
| 성능 테스트 없이 무조건 힌트 사용 | ❌ 위험함 |
/*+ ordered use_nl */는 무조건 성능이 좋은 힌트가 아닙니다.
오히려 상황에 따라 성능을 망칠 수도 있으므로, 실행 계획 분석 및 테스트 후 신중하게 사용해야 합니다.
| 큐브리드 쿼리 플랜에서 비용 수치를 낮추는 방법은? (0) | 2025.06.24 |
|---|---|
| sqlite 에서 rank 함수같은 역할은? 요일별로 상위 3개 조회하기 (0) | 2025.06.24 |
| 데이터베이스 함수에서 cast() 함수 역할은? (0) | 2025.06.18 |
| sqLite 날짜형태 변경하는 쿼리는? (0) | 2025.06.18 |
| 데이터베이스 sql avg 평균 함수를 조건절에 쓰는 방법은? (0) | 2025.06.18 |