많은 데이터의 MAX 0 3 2,311

by 초보개발 [Oracle 기초] MAX와 PARTITION BY 속도면 [2023.09.14 18:10:05]


안녕하세요... 

초보개발자입니다.

많은 데이터 중에 MAX가 아닌데이터만 추출해야 하는데요...

죄송합니다. 쿼리를 보여드리는게 맞느데 회사규정이 그래서..

1.

SELECT *FROM TBN A

WHERE A.SN NOT IN (SELECT MAX(SN) FROM TBN B WHERE B.SN = A.SN) 

아님...

2.

SELECT *FROM TBN

FROM  ( SELECT SN, ROW_NUMBER() OVER (PARTITION BY SN ORDER BY RNT DESC) RK 

            FROM TBN 

            ) 

WHERE RK > 1 

어느 쿼리가 속도면이 좋은가요? 데이터가 많은 편이라 MAX아닌걸 추출해서 작업하는것도 시간이 꽤 걸리네요..

고수님께 문의 드립니다.

 

by 마농 [2023.09.14 18:45:36]

쿼리나 설명이 앞뒤가 안맞습니다.
두 쿼리가 달라서 MAX 값을 가져올 항목이 sn 인지? rnt 인지 모르겠습니다.
그룹핑 기준이 있는지? 전체중 MAX 인지? 그룹별 MAX 인지?
기준이 명확하게 제시돠어야 합니다.
쿼리도 조금 더 가다듬어 주셔야 합니다. (실 쿼리와 비슷하게)
성능까지 고려하려면 건수 정보 및 인덱스 정보 등도 필요합니다.


by 초보개발 [2023.09.14 19:49:58]

아.. 죄송합니다. 마음이 급해서 ..

1.

SELECT *FROM TBN A

WHERE (A.SN || A.RNT) NOT IN (SELECT SN || MAX(RNT) FROM TBN B WHERE B.SN = A.SN GROUP BY SN) 

아님...

2.

SELECT *FROM TBN

FROM  ( SELECT SN, ROW_NUMBER() OVER (PARTITION BY SN ORDER BY RNT DESC) RK 

            FROM TBN 

            ) 

WHERE RK > 1 

입니다.. 건수는 하루에 20만건정도이고

인덱스는 인터페이스정보라 저희쪽에서 제어가 안되네요...

먼저 감사드립니다..


by 마농 [2023.09.14 23:29:18]

2번 방식 추천이요.

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