반응형
최근 날짜를 가진 목록을 조회하려면 MAX 날짜를 가져와야 한다.
DATE1에 인덱스가 있다면 아래와 같이 하면 되지만
SELECT *
FROM TABLE1
WHERE (KEY1, DATE1) IN (SELECT KEY1, MAX(DATE1)
FROM TABLE1
WHERE COND1 = :cond1
GROUP BY KEY1)
인덱스가 없으면 상당히 속도가 느리다.
그럴때는 RANK 로 가져오는게 성능이 더 좋다.
SELECT *
FROM (
SELECT KEY1
, RANK() OVER(PARTITION BY KEY1 ORDER BY DATE1 DESC) AS RK
FROM TABLE1
WHERE COND1 = :cond1
)
WHERE RK = 1
뭔가 더 없어 보이고 더 느릴 것 같이 생겼는데 오묘하다..
반응형
'TechNical > Oracle' 카테고리의 다른 글
| 누적형 코드 데이터를 계층으로 조회 (0) | 2025.04.08 |
|---|---|
| [튜닝] 불필요한 정렬 제거 (0) | 2019.05.24 |
| 오라클 DBLINK 하면 ORA-01017: invalid username/password; logon denied 오류 (8) | 2011.09.18 |
| MERGE INTO 를 사용해 봅시다. (0) | 2010.09.17 |
| 각 그룹 금액의 합의 비율금액의 합계 쿼리.... 뭐야 -_-;; (0) | 2010.09.17 |
댓글