database.sarang.net
UserID
Passwd
Database
DBMS
MySQL
PostgreSQL
Firebird
ㆍOracle
Informix
Sybase
MS-SQL
DB2
Cache
CUBRID
LDAP
ALTIBASE
Tibero
DB 문서들
스터디
Community
공지사항
자유게시판
구인|구직
DSN 갤러리
도움주신분들
Admin
운영게시판
최근게시물
Oracle Q&A 23975 게시물 읽기
No. 23975
max 값 가져오기...
작성자
찐(choicepyo)
작성일
2005-09-06 18:22
조회수
1,252

오라클 9i 입니다.

NO SEQ VALUE
---- ---- -------

1111 1 AAAA

1111 2 BBBB

2222 1 CCCC

2222 2 DDDD

3333 1 EEEE

4444 1 FFFF

4444 2 GGGG

4444 3 KKKK

 

이런 식의 데이타가 30만 건이 있는 테이블이 있습니다.

여기서 no의 SEQ가 MAX값의 VALUE를 가져 오려고 하는데...

select A.no, value
from test A,
(
Select
no, max(seq) Mseq
from test
group by
ticket_no
) B
Where A.seq = B.Mseq

 

이런 식으로 데이타를 조인해서 가져 왔는데... 건수가 많다보니 속도가 엄청 느리네요!!

혹시 다른 방법 있으시면 좀 알려 주세요

PK는 없고 index는 no입니다.

 

도움 주시면 감사하겠습니다.

 

이 글에 대한 댓글이 총 5건 있습니다.

select A.no, value
from test A,
(
Select
no, max(seq) Mseq
from test
group by
ticket_no
) B
Where A.seq = B.Mseq and A.no=B.no

이경환(babocom)님이 2005-09-06 18:34에 작성한 댓글입니다.

이경환님  괜찮으시다면 빨라지는 원인좀 설명해주실수 있나요?

 

다른 고수분들도 조언바랍니다.

 

 

김진완님이 2005-09-06 18:37에 작성한 댓글입니다. Edit

no 에 인덱스가 있으니...  왜 쿼리에서 no 를 빼셨나요?

group by 는 no 로 했는데 바깥에서 no 를 조인하지 않으면...

seq 가 같은건 다 달라붙겠죠...  더더구나 인덱스도 없는데...

그럼 원하는 결과가 안나오죠... 

seq 만 같으면 엉뚱한 no 나 value 가 붙어버릴수도 있으니..

이경환(babocom)님이 2005-09-06 18:45에 작성한 댓글입니다.

검색에서 제한조건은 가능한 자세히 해주시는게 좋습니다.

쿼리튜닝의 기본은 쓰레기 데이타를 가급적 빨리 없애는 거죠..

그러기 위해선 제한조건이 많을수록, 자세할수록 효율이 커집니다.

물론 중복되거나 겹쳐지는 조건은 최적화 과정에서 자동으로 제거됩니다.  사용자 입장에선 가능한 상세히 명시해 주는게 좋죠~

 

'가서 이거 갖고와라'  하는것 보다는 '가서 어디어디 있는 어떻게 생긴 이런거 갖고와라' 라고 해주는게 DBMS 측에선 더 처리하기 편하죠..

이경환(babocom)님이 2005-09-07 00:32에 작성한 댓글입니다.

select A.no, value
from test A,
(
Select
no, max(seq) Mseq
from test
where no between '00000' and '99999'

group by
no
) B
Where A.seq = B.Mseq and A.no=B.no

 

이렇게 했더니 더 빨라졌습니다. 플랜 떠보니 where 절이 없을 때는 FULL SCAN 하고 where 절을 주니 RANGE SCAN 하는 군요...

답변 주신 이경환님 감사합니다.

찐(choicepyo)님이 2005-09-07 08:59에 작성한 댓글입니다.
[Top]
No.
제목
작성자
작성일
조회
23979쿼리 질문 좀..ㅠㅠ [1]
오라클초보
2005-09-06
671
23978리두로그파일 잘못 생성...TT [3]
이영주
2005-09-06
2892
23976트리거 질문입니다 -무플은 괴로워요~ [7]
초보
2005-09-06
3015
23975max 값 가져오기... [5]
2005-09-06
1252
23973두개의 쿼리문이 있는데 한개의 쿼리문으로 만들고 싶거든요 [2]
재키
2005-09-06
892
23972[질문]oracle 디렉토리 내 일부 파일이 삭제된 경우... [4]
강원진
2005-09-06
1269
23971쿼리가 궁금합니다. 도와주세요. [3]
궁금이2
2005-09-06
810
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2024 DSN, All rights reserved.
작업시간: 0.018초, 이곳 서비스는
	PostgreSQL v16.2로 자료를 관리합니다