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
운영게시판
최근게시물
DB2 Q&A 693 게시물 읽기
No. 693
쿼리문 수행은 되나 시간이 너무 오래 걸립니다..
작성자
DB2초보
작성일
2004-10-14 10:33
조회수
7,577

DB2 처음 사용합니다.

쿼리문은 다음과 같습니다.

SELECT
concat(RTRIM(IFNULL(PT01A06,'')),
concat(RTRIM(IFNULL(PT01A07,'')),
concat(RTRIM(IFNULL(PT01A08,'')),
concat(RTRIM(IFNULL(PT01A09,'')),RTRIM(IFNULL(PT01A10,''))
))))as PT01A06_10,
PT01A6711,
concat(RTRIM(IFNULL(PT01A01,'')),
concat(RTRIM(IFNULL(PT01A02,'')),
concat(RTRIM(IFNULL(PT01A03,'')),
concat(RTRIM(IFNULL(PT01A04,'')), RTRIM(IFNULL(PT01A05,''))
)))) as PT01A01_05,
PT01A52,PT01A14,PT01A15,PT01A16,
b.PT05D01,b.PT05D26,b.PT05D03
FROM
(
SELECT * FROM PROSADM.PHT01AB
WHERE
concat(RTRIM(IFNULL(PT01A06,'')),
concat(RTRIM(IFNULL(PT01A07,'')),
concat(RTRIM(IFNULL(PT01A08,'')),
concat(RTRIM(IFNULL(PT01A09,'')),RTRIM(IFNULL(PT01A10,''))
)))) LIKE 'E408%' AND
PT01A06 = 'E' AND
PT01A44 = '7' AND
PT01A6711 BETWEEN 20040801 AND 20040831
)AS a
LEFT JOIN PROSADM.PHT05DB AS b
ON
a.PT01A01 = SUBSTR(b.PT05D07,1,1)AND
a.PT01A02 = SUBSTR(b.PT05D07,2,1)AND
a.PT01A03 = SUBSTR(b.PT05D07,3,1)AND
a.PT01A04 = SUBSTR(b.PT05D07,4,1)AND
a.PT01A05 = b.PT05D08

 

위의 쿼리문을 수행하면 수행은 됩니다. 결과값은 약 13000개 정도가 나옵니다.

그런데 수행시간이 너무 오래걸립니다.

무엇때문에 오래 걸리는지 알고 싶습니다..concat때문에 왜 걸리는지 아님ifnull이나 그것도 아니면

조회조건에서 like검색때문인지.아니면 또다른 문제점이 있는지..좀 가르쳐 주세요..디비 고수님들 부탁드립니다.

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

 

WHERE 조건에 concat 문과 SUBSTR 문을 사용 하시면 INDEX를 사용할수가 없습니다.

그러니 당연 해당 테이블을 FULL SCAN 하게 되어 최하의 속도가 나올수 밖에 없는 상황이 됩니다.

만일 1억건에 해당 조건을 그리고 LEFT JOIN 테이블이 10건이라면  10억건을 읽게 되는 결과를 초래합니다.

 

전체적으로 DB 튜닝이 필요하실 듯 싶습니다.

심영주님이 2004-11-25 21:18에 작성한 댓글입니다. Edit
[Top]
No.
제목
작성자
작성일
조회
698DB2 도움말 관련 사이트 어떻게 되죠? [1]
백동열
2004-10-18
6772
696기존에 생성된 DB를 확인하고 싶습니다. [1]
초보
2004-10-15
5887
694예기치 않은 토큰 ","이(가) 있었습니다 라는 메시지는 무엇인가요? [2]
재학
2004-10-14
9420
693쿼리문 수행은 되나 시간이 너무 오래 걸립니다.. [1]
DB2초보
2004-10-14
7577
692테이블들을 백업하고 테이블 안의 컬럼이름들만 바꾸려 합니다..
이석희
2004-10-08
5505
691max값 구하는 방법좀..가르쳐 주세요. [1]
김민기
2004-10-07
6459
690오라클 trunce()함수와 같은 용도의 DB2 함수는 없나요? [1]
홍바람
2004-10-06
7060
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2024 DSN, All rights reserved.
작업시간: 0.025초, 이곳 서비스는
	PostgreSQL v16.4로 자료를 관리합니다