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
운영게시판
최근게시물
CUBRID Q&A 955 게시물 읽기
No. 955
Q.테이블 건수에 따른 Join Query 속도 문의
작성자
홍영택
작성일
2008-02-26 10:58
조회수
4,088

안녕하세요.

과거 0~2초 정도 걸리던 쿼리가 테이블 건수가 올라감에 따라(다른 차이점을 아직 찾지 못했습니다.) 10~100배 가량 느려져서 왜 이런현상이 나타나는지

혹시 제가 실수한 부부분이 있다면 어디를 체크해야 할지 궁금해서 글을 올립니다. :)

 

상태는 아래와 같습니다.

 

 

******* 2008년 02 월17일******

 

1. Table : tb_fileinfo, tb_filesum 각각 약 200만건

2. 쿼리 :  select s.seq, s.seq_fileinfo, i.hk_file, i.str_tags, i.str_path, i.cd_fmt, i.str_fmt

from tb_filesum s, tb_fileinfo i

where s.is_filter=\'Y\' and s.is_thumb=\'N\' and s.seq_fileinfo=i.seq and i.cd_fmt=60100 and rownum < 150 : 2.03(sec)

 

select s.seq, s.seq_fileinfo, i.hk_file, i.str_tags, i.str_path, i.cd_fmt, i.str_fmtfrom tb_filesum s, tb_fileinfo i

where s.is_filter=\'Y\' and s.is_thumb=\'N\' and s.seq_fileinfo=i.seq and i.cd_fmt=35200 and rownum < 300 : 0.55(sec)

 

select s.seq, s.seq_fileinfo, i.hk_file, i.str_tags, i.str_path, i.cd_fmt, i.str_fmt

from tb_filesum s, tb_fileinfo i

where s.is_filter=\'Y\' and s.is_thumb=\'N\' and s.seq_fileinfo=i.seq and

i.cd_fmt in (60300,60312,60313) and rownum < 300 : 1.42(sec)

 

******* 2008년 02 월 22일 *******

1. Table : tb_fileinfo, tb_filesum 각각 약 290만건

2. select s.seq, s.seq_fileinfo, i.hk_file, i.str_tags, i.str_path, i.cd_fmt, i.str_fmt

from tb_filesum s, tb_fileinfo i

where s.is_filter=\'Y\' and s.is_thumb=\'N\' and s.seq_fileinfo=i.seq and i.cd_fmt=60100 and rownum < ? : 202.94(sec)

 

INFO select s.seq, s.seq_fileinfo, i.hk_file, i.str_tags, i.str_path, i.cd_fmt, i.str_fmt

from tb_filesum s, tb_fileinfo i

where s.is_filter=\'Y\' and s.is_thumb=\'N\' and s.seq_fileinfo=i.seq and i.cd_fmt=35200 and rownum < ? : 0.70(sec)

 

INFO select s.seq, s.seq_fileinfo, i.hk_file, i.str_tags, i.str_path, i.cd_fmt, i.str_fmt

from tb_filesum s, tb_fileinfo i

where s.is_filter=\'Y\' and s.is_thumb=\'N\' and s.seq_fileinfo=i.seq and i.cd_fmt in (60300,60312,60313) and rownum < ? : 27.27(sec)

 

인덱스는 tb_filesum 에 is_filter, is_thumb 쌍으로 걸었고

tb_fileinfo 에 cd_fmt는 걸지 않았습니다.

 

시스템 resource상황은 I/O, memory, CPU 사용상태가 17일과 22일 거희 동일합니다.

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

tb_filesum의 is_filter, is_thumb의 인덱스의 분포도가 그렇게 높지 않을 것으로 보입니다.

tb_fileinfo의 cd_fmt를 활용하는 인덱스가 없다면 먼저 cd_fmt의 인덱스를 생성하시면 좋을 것 같구요 또한 조인되는 키가 seq_fileinfo, seq임으로 각각 인덱스를 생성해서 질의를 수행해 보시기 바랍니다.

 

즉 이 쿼리를 위해서 3개의 인덱스나 unique 인덱스를 만들어야 할 것 같습니다.

cd_fmt

seq_fileinfo

seq

 

해보시고 그래도 늦으면 다시 연락 바랍니다.

 

>안녕하세요.

>과거 0~2초 정도 걸리던 쿼리가 테이블 건수가 올라감에 따라(다른 차이점을 아직 찾지 못했습니다.) 10~100배 가량 느려져서 왜 이런현상이 나타나는지

>혹시 제가 실수한 부부분이 있다면 어디를 체크해야 할지 궁금해서 글을 올립니다. :)

>

>상태는 아래와 같습니다.

>

>

>******* 2008년 02 월17일******

>

>1. Table : tb_fileinfo, tb_filesum 각각 약 200만건

>2. 쿼리 :  select s.seq, s.seq_fileinfo, i.hk_file, i.str_tags, i.str_path, i.cd_fmt, i.str_fmt

>from tb_filesum s, tb_fileinfo i

>where s.is_filter=\'Y\' and s.is_thumb=\'N\' and s.seq_fileinfo=i.seq and i.cd_fmt=60100 and rownum < 150 : 2.03(sec)

>

>select s.seq, s.seq_fileinfo, i.hk_file, i.str_tags, i.str_path, i.cd_fmt, i.str_fmtfrom tb_filesum s, tb_fileinfo i

>where s.is_filter=\'Y\' and s.is_thumb=\'N\' and s.seq_fileinfo=i.seq and i.cd_fmt=35200 and rownum < 300 : 0.55(sec)

>

>select s.seq, s.seq_fileinfo, i.hk_file, i.str_tags, i.str_path, i.cd_fmt, i.str_fmt

>from tb_filesum s, tb_fileinfo i

>where s.is_filter=\'Y\' and s.is_thumb=\'N\' and s.seq_fileinfo=i.seq and

>i.cd_fmt in (60300,60312,60313) and rownum < 300 : 1.42(sec)

>

>******* 2008년 02 월 22일 *******

>1. Table : tb_fileinfo, tb_filesum 각각 약 290만건

>2. select s.seq, s.seq_fileinfo, i.hk_file, i.str_tags, i.str_path, i.cd_fmt, i.str_fmt

>from tb_filesum s, tb_fileinfo i

>where s.is_filter=\'Y\' and s.is_thumb=\'N\' and s.seq_fileinfo=i.seq and i.cd_fmt=60100 and rownum < ? : 202.94(sec)

>

>INFO select s.seq, s.seq_fileinfo, i.hk_file, i.str_tags, i.str_path, i.cd_fmt, i.str_fmt

>from tb_filesum s, tb_fileinfo i

>where s.is_filter=\'Y\' and s.is_thumb=\'N\' and s.seq_fileinfo=i.seq and i.cd_fmt=35200 and rownum < ? : 0.70(sec)

>

>INFO select s.seq, s.seq_fileinfo, i.hk_file, i.str_tags, i.str_path, i.cd_fmt, i.str_fmt

>from tb_filesum s, tb_fileinfo i

>where s.is_filter=\'Y\' and s.is_thumb=\'N\' and s.seq_fileinfo=i.seq and i.cd_fmt in (60300,60312,60313) and rownum < ? : 27.27(sec)

>

>인덱스는 tb_filesum 에 is_filter, is_thumb 쌍으로 걸었고

>tb_fileinfo 에 cd_fmt는 걸지 않았습니다.

>

>시스템 resource상황은 I/O, memory, CPU 사용상태가 17일과 22일 거희 동일합니다.

 

박근택님이 2008-02-26 13:53에 작성한 댓글입니다. Edit
[Top]
No.
제목
작성자
작성일
조회
959Q.매니져에서 필드 수정하는데 좀 문제가 있네요. [1]
초짜
2008-02-28
4029
958Q.질문입니다~ [2]
박유나
2008-02-26
5512
956Q.트리거 생성이 안됩니다. [1]
사용자
2008-02-26
4127
955Q.테이블 건수에 따른 Join Query 속도 문의 [1]
홍영택
2008-02-26
4088
954Q.서버 재부팅 후 부터 큐브리드 매니저가 접속이 되지 않습니다. [1]
varem
2008-02-25
4026
953Q.질문 입니다 [1]
이상인
2008-02-25
3953
952Q.외래키 지정했는데요 삭제는 어떻게 하나요 [1]
초짜
2008-02-25
4765
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2023 DSN, All rights reserved.
작업시간: 0.050초, 이곳 서비스는
	PostgreSQL v16.1로 자료를 관리합니다