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 41148 게시물 읽기
No. 41148
sql 튜닝 문의입니다.
작성자
이현정
작성일
2016-05-03 15:42
조회수
8,277

select a.aom, a.proj, a.type, a.blk, a.actv, a.f_actv

from

( select a.aom, a.proj, a.type, a.blk, a.f_actv,

row_number() over (partition by a.aom order by a.aom_rev desc) no

from plqty_hom a

where a.proj = 'pstobov' ( 총 2,000만건에서 100백만건으로 줄임)

) a

where no = 1

and a.err_cd is null ;

 

위의 sql의 속도는 partition by 절에서 속도가 저하됩니다. 데이터가 많아요.

from plqty_hom a

where a.proj = 'pstobov' 절로 100백만건정도 됩니다.

 

위와 같은 sql에 인덱스를 어떻게 만들면 도움이 될까해서 문의해봅니다.

즉 where 절과 파티션 바이 절의 인덱스가 유용한지를 여쭈고 싶습니다.

 

가령 (proj,aom_rev desc,aom )

 

테스트를 해 볼수 없는 환경이라서 문의 드려 봅니다.

 

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

제시한 쿼리가 실제 쿼리가 아닌듯 하네요.
  - AND a.err_cd IS NULL - 이 조건 때문에 에러 날 듯
100백만건은 오타죠?
  - 100만건 OR 백만건 인거죠?
  - plqty_hom a        ==> 2000만건
  - a.proj = 'pstobov' ==>  100만건
  - no = 1                         ==> ? 건
  - no = 1 AND a.err_cd IS NULL    ==> ? 건
기존 인덱스는 뭐가 있나요?

마농(manon94)님이 2016-05-03 16:59에 작성한 댓글입니다.

가져오는 데이타가 100만건 정도이면 쿼리 에서 사용하는 모든 컬럼이 인덱스에 있어야 인덱스가 효용 가치가 있습니다.

많은 데이타를 가져오는 것에서 제일 느린것은 인덱스를 타고 테이블 ACCESS 하는것이 제일 느린것입니다.

이럴때는 차라리 인덱스보다 FULL SCAN이 더빠릅니다.

 

실제로 테스트 해보지는 않았지만 아래의 쿼리로 한번 해보세여.

조건 )  aom,  aom_rev가 유일할 경우  ( 유일하지 않을 경우에는 중복데이타가 나올수 있음 )

 

 

select  /*+ full(a) leading(a) */

    a.aom, a.proj, a.type, a.blk, a.f_actv

FROM  plqty_hom A

WHERE A.proj = 'pstobov' 

AND   NOT EXISTS 

(

    SELECT /*+ FULL(B) HASH_SJ(B) */ 1 FROM plqty_hom B

    WHERE A.aom = B.AOM

    AND   A.aom_rev < B.aom_rev

   and  b.proj = 'pstobov'

   and  b.err_cd is null

)

and  a.err_cd is null

 

이 쿼리의 plan이 제가 생각하는게 맞다면 이게 좀더 빠를듯해여. 

 

 

 

이정재(ljjang)님이 2016-05-11 21:16에 작성한 댓글입니다.
이 댓글은 2016-05-11 21:20에 마지막으로 수정되었습니다.
[Top]
No.
제목
작성자
작성일
조회
41152쿼리 질문드려요 [1]
궁금
2016-05-11
7883
41151주차계산 [1]
김성수
2016-05-09
8240
41149SQL 튜닝관련 [3]
도우덕
2016-05-09
8139
41148sql 튜닝 문의입니다. [2]
이현정
2016-05-03
8277
41147프로시저->프로시저 호출 문의입니다.. [2]
노력하는초보자
2016-05-03
7892
41145회사 그룹별 평균의 최대 최소값의 회사 하나씩 뽑는거 질문이요
박양희
2016-04-29
7898
41144쿼리질문 입니다! N 대 N의 관계.. [2]
노력하는초보
2016-04-27
8179
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2023 DSN, All rights reserved.
작업시간: 0.049초, 이곳 서비스는
	PostgreSQL v16.1로 자료를 관리합니다