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
운영게시판
최근게시물
Informix Q&A 3426 게시물 읽기
No. 3426
쿼리의 실행 속도
작성자
최일원(sansi)
작성일
2014-11-03 17:29ⓒ
2019-01-29 09:49ⓜ
조회수
4,180

 안녕하세요. 약 80만건의 데이터를 처리해서 unload to 로 파일로 남기려고 하는데 처리 시간이 너무 오래 걸리네요 ㅡ.ㅡ

Select

Date,
Time,
TIme_Intrv,
Location,
ID,
Dept,
Mobile,
SUM(A),
SUM(B),
SUM(C),
.
.
.
FROM TABLE A
WHERE Date = 'TODAY - 1'
AND SUBSTR(ID,1,1) = '1'
AND TIME BETWEEN 0000 AND 2330
AND DEPT IN (1,2,3,4,5)
GROUP BY DATE, TIME, TIME_INTRV, LOCATION, ID, DEPT, MOBILE
 
GROUP BY가 묶인 컬럼이 너무 많아서 그런거 같은데..
혹시 조금 더 시간을 줄일 수 있는 방법이 있을까요.
 
Index 타는 컬럼은 모두 필터를 걸어 놨는데... estimated cost가 더 이상 줄지를 않네요.
단일 테이블 select 입니다.
참고로 인덱스 정보는 아래와 같습니다.
 
 
 
Index_name         Owner    Type/Clstr Access_Method      Columns

 

hag_ndx1           root     dupls/No   btree              date

 location

 id

 dept

 

hag_ndx2           root     dupls/No   btree              date

 acd

dept

 

hag_ndx3           root     dupls/No   btree              location

 date

TIme_Intrv

 
그리고 혹시 추가로 unload to 로 데이터 파일로 떨굴때 Sum 함수가 쓰인 데이터는 마지막에 소수점이 찍혀나오네요.
ROUND, TRUNC 모두 써봐도 무조건 나옵니다. ㅡ.ㅡ;; 이게 파일 사이즈로도 잡아 먹어서.. 결국 시간도 더 걸리는 것 같아요.
CHAR로 형변환을 하면 괜찮아 지지만 또 쿼리 속도가 늘어 납니다. 
이 부분을 처리할 수 있는 방법도 있을지요?
이 글에 대한 댓글이 총 1건 있습니다.
안녕하세요.
우선 사용하시는 인포믹스 버전을 정확히 알수가 없어 10버전 기준으로 말씀드립니다.
이상의 버전에는 동일하게 적용됩니다.
 
group by 하는 데이터 자체가 크다면 (예를 들어 말씀하신 80만건인 경우) 디스크를 사용할 가능성이 높아져서 처리가 늦어질 수 있습니다.
이럴 때는 메모리에서 order by, group by가 처리되도록 유도하기 위해 파라미터(DS_TOTAL_MEMORY, DS_NONPDQ_QUERY_MEM, kb단위)를 설정할 수 있습니다.
 
예)
onmode -wm DS_TOTAL_MEMORY=40960
onmode -wm DS_NONPDQ_QUERY_MEM=4096
 
위와같이 수행하면 온라인중에 파라미터 변경이 가능하고 onstat -g mgm 명령으로 설정이 되었는지 확인할 수 있습니다. DS_NONPDQ_QUERY_MEM은 DS_TOTAL_MEMORY 크기의 25%까지 설정할 수 있습니다.
 
또는 cpu자원을 여러개 사용할 여력이 있어 테이블을 파티셔닝(fragment) 하고 병렬처리(pdqpriority)하는 방법도 있습니다.
그리고 sum함수가 쓰였을때 소수점이 나오는 문제는 int나 char등으로 형변환하는 방법밖에 없는듯하네요
 
 
DS_NONPDQ_QUERY_MEM
http://publib.boulder.ibm.com/infocenter/idshelp/v10/topic/com.ibm.adref.doc/adref82.htm
 
DS_TOTAL_MEMORY
http://publib.boulder.ibm.com/infocenter/idshelp/v10/index.jsp?topic=/com.ibm.adref.doc/adref84.htm
 
정상규(pajama)님이 2014-11-04 01:32에 작성한 댓글입니다.
[Top]
No.
제목
작성자
작성일
조회
3429Informix 보안 관련 질문
2015-03-25
7432
3428인포믹스 insert문의 드립니다 [1]
허순호
2015-03-17
3681
3427informix 라이센스관련 [1]
레몬2
2014-11-09
4376
3426쿼리의 실행 속도 [1]
최일원
2014-11-03
4180
3424chunk 의 사이즈 구하기 [2]
허로니
2014-09-24
3960
3423계정생성 방법 [1]
허로니
2014-09-04
3940
3422아래의 글 추가 문의 입니다. [1]
허로니
2014-09-04
3851
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2023 DSN, All rights reserved.
작업시간: 0.049초, 이곳 서비스는
	PostgreSQL v16.1로 자료를 관리합니다