SQL 쿼리 속도문제

by 칭칭이 posted Oct 17, 2013

* 질문 등록 시 다음의 내용을 꼭 기입하여 주세요.
OS
Window7 32bit, Linux 64bit 등
CUBRID Ver.
[cubrid_rel] 수행 결과
CUBRID TOOL Ver.
[도움말]-[버전정보] 확인
응용 환경(API)
java, php, odbc 등 입력

* CUBRID 응용 오류, SQL 오류 또는 SQL 튜닝 관련된 문의는 반드시 다음의 내용을 추가해 주세요. 비밀글이나 비밀 댓글도 가능합니다.
* 저희가 상황을 이해하고, 재현이 가능해야 알 수 있는 문제들이 많습니다. 가능한 정보/정황들을 부탁합니다.
에러 내용 및 재현 방법 재현 가능한 Source와 SQL
관련 테이블(인덱스, 키정보 포함) 정보 CUBRID 홈 디렉토리 아래 log 디렉토리 압축


-------------- 아래에 질문 사항을 기입해 주세요. ------------------------------------------------------------------------

안녕하세요. 저는 이번에 오라클을 큐브리드로 재 구축하는 작업을 하고있는 개발자입니다.

현재 오라클에서 큐브리드로 데이터 마이그레이션 작업을 진행한 상태 입니다.  약 70만건정도 데이터 마이그레이션을 진행했고

이상없이 작업을 마친 상태입니다. 그런데 데이터를 넣은 후에 SELECT문을 실행하면 너무 느립니다.

"SELECT * FROM  HANA_ITEM  WHERE ISVISB = 1; " 이런 기본 쿼리문이구요. 큐브리드메니저에 질의튜닝도구로 보면 해당 필드에 건

INDEX (XIE_HANAITEM_ISVISB ) 도 타고 있는 상태인데 COST가 60000이 넘게 나옵니다. 데이터가 없는 비슷한 구조의 테이블을 SELECT하면 COST가 5 미만이걸

보면 좀 이상한 생각이 듭니다. 마이그레이션 대상인 오라클에서는 1초도 않걸리는데 반해 너무 느리다는 생각이 드네요.

밑에 테이블 생성쿼리에서  CONTENT필드를 STRING으로 선언한 부분이 의심되어 CONTENT 부분을 빼고 쿼리를 날려도

속도가 그닥 빨라지지는 않는것 같습니다. 지금과 같은 현상이 있을때 어느부분을 봐야하는지 팁을 주시면 감사하겠습니다.

 

###테이블 생성 쿼리

CREATE TABLE HANA_ITEM
(
 ITEMID           NUMERIC (8) NOT NULL,
 GID              NUMERIC (8) NOT NULL,
 LEVEL1           NUMERIC (8),
 LEVEL2           NUMERIC (8),
 LEVEL3           NUMERIC (8),
 LEVEL4           NUMERIC (8),
 PID              NUMERIC (8),
 POS              NUMERIC (8) DEFAULT - 1,
 TITLE            VARCHAR (1000),
 AUTH_USERID      NUMERIC (8),
 AUTH_NAME        VARCHAR (1000),
 RGST_USERID      NUMERIC (8),
 RGST_NAME        VARCHAR (1000),
 CONTENT          STRING,
 READ_CNT         NUMERIC (8) DEFAULT 0 NOT NULL,
 RCMD_CNT         NUMERIC (8) DEFAULT 0 NOT NULL,
 OPN_CNT          NUMERIC (8) DEFAULT 0 NOT NULL,
 STATUS           NUMERIC (4) DEFAULT - 1 NOT NULL,
 TRNS_KEY         VARCHAR (32),
 LAST_UPDT        DATETIME DEFAULT SYSDATETIME,
 TRNS_SRC         VARCHAR (32),
 RFRN_CNT         NUMERIC (8) DEFAULT 0 NOT NULL,
 FILE_EXT         VARCHAR (8),
 KMID             NUMERIC (8),
 EXPR_DATE        DATETIME,
 RPLY_CNT         NUMERIC (8) DEFAULT 0 NOT NULL,
 SCRT_LEVEL       NUMERIC (4) DEFAULT 0 NOT NULL,
 AUTH_DISP        VARCHAR (1000),
 FLAG_CODE        NUMERIC (16) DEFAULT 0 NOT NULL,
 ISVISB           NUMERIC (1) DEFAULT 0 NOT NULL,
 ISANNOUNCED      NUMERIC (1) DEFAULT 0 NOT NULL,
 EXPR_MNTH        NUMERIC (4) DEFAULT - 1 NOT NULL,
 RGST_DATE        DATETIME DEFAULT SYSDATETIME,
 STEP             NUMERIC (8) DEFAULT 0 NOT NULL,
 FORMID           NUMERIC (8),
 ANNC_SDATE       DATETIME,
 ANNC_EDATE       DATETIME,
 CSTM_FIELD1      VARCHAR (500),
 CSTM_FIELD2      VARCHAR (500),
 CSTM_FIELD3      VARCHAR (4000),
 SCRP_CNT         NUMERIC (8) DEFAULT 0 NOT NULL,
 CSTM_DATE1       DATETIME
) ;

 

###인덱스 생성 쿼리

CREATE INDEX XIF_HANAITEM_KMID
ON HANA_ITEM
(
 KMID ASC,
 ISVISB ASC,
 "GID" DESC,
 STEP ASC
) ;

CREATE INDEX XIE_HANAITEM_ANNOUNCED
ON HANA_ITEM
(
 ISVISB ASC,
 ISANNOUNCED ASC,
 ANNC_SDATE ASC,
 ANNC_EDATE ASC
) ;

CREATE INDEX XIE_HANAITEM_AUTHUSERID
ON HANA_ITEM
(
 AUTH_USERID ASC,
 STATUS ASC
) ;

CREATE INDEX XIE_HANAITEM_ISVISB
ON HANA_ITEM
(
 ISVISB ASC,
 "GID" DESC,
 STEP ASC
) ;

CREATE INDEX XIE_HANAITEM_LEVEL1
ON HANA_ITEM
(
 LEVEL1 ASC,
 ISVISB ASC,
 "GID" DESC,
 STEP ASC
) ;

CREATE INDEX XIE_HANAITEM_LEVEL2
ON HANA_ITEM
(
 LEVEL2 ASC,
 ISVISB ASC,
 "GID" DESC,
 STEP ASC
) ;

CREATE INDEX XIE_HANAITEM_LEVEL3
ON HANA_ITEM
(
 LEVEL3 ASC,
 ISVISB ASC,
 "GID" DESC,
 STEP ASC
) ;

CREATE INDEX XIE_HANAITEM_LEVEL4
ON HANA_ITEM
(
 LEVEL4 ASC,
 ISVISB ASC,
 "GID" DESC,
 STEP ASC
) ;

CREATE INDEX XIE_HANAITEM_RGSTUSERID
ON HANA_ITEM
(
 RGST_USERID ASC,
 STATUS ASC
) ;

 


Articles