프로시저 실행 시 in변수 3개와 out변수 3개입니다.
수동으로 각3개의 out변수에 대한 쿼리문을 각각 돌리면 결과 나오는게 1초이하인데
프로시저로 수행을 하면 약40초가 걸립니다.
프로시저 본문은 아래와 같습니다.
************************************************************************
CREATE PROCEDURE PROTESTMAX
(
IN i_SASEQ NUMERIC(10),
IN i_EASEQ NUMERIC(10),
IN i_AGEN NUMERIC(10),
OUT o_ASEQ NUMERIC(10),
OUT o_AGES NUMERIC(10),
OUT o_TMST VARCHAR(19)
)
LANGUAGE SQL
BEGIN
DECLARE t_ASEQ NUMERIC(10) DEFAULT 0;
DECLARE t_AGES NUMERIC(10) DEFAULT 0;
BEGIN
--- adtre의 Max -
Select VALUE(MAX(ASEQ),0)
INTO t_ASEQ
From AGDTRE
Where ASEQ between i_SASEQ And i_EASEQ
And AGEN = i_AGEN;
SET o_ASEQ = t_ASEQ;
Select VALUE(MAX(AGES),0)
INTO t_AGES
From AGDTRE
Where ASEQ = t_ASEQ
And AGEN = i_AGEN;
SET o_AGES = t_AGES;
Select RTRIM(CHAR(DATE(TMST))) || ' ' || REPLACE(SUBSTR(CHAR(TIMESTAMP(TMST)),12,8),'.',':')
INTO o_TMST
From AGDTRE
Where ASEQ = t_ASEQ
And AGES = t_AGES
And AGEN = i_AGEN;
END;
END@
**************************************************************************************
이유가 왜그런지를 모르겠습니다.
프로시저 수행 실행계획이나 원인을 어디서 찾을 수가 있는지요.. 해당 인덱스는 모두 생성 되어 있습니다.
또 프로시저나 쿼리문 수행시간을 알 수 있는 명령어가 있는지요? (오라클의 set timing on 같은..)
고수님들께서 도와주시길 바랍니다..
|