3번째 쿼리 이렇게 있는데.. 결과는 모두 동일이야..
세번째는 조인 조건이 모두 2개인데 그걸 스칼라 서브쿼리로 돌렸어..
실행계획이 이렇게 나오는데.. 세번째가 가장 나은건가??
아놔 디비 튜닝에 대해 잘 몰라서 어떤걸 써야 할지 모르겠네... 단순히 코스트 적고 이런거 쓰면 되나
.. 디비 공부도 좀 해야할듯 한데..
---------------------
첫번째 쿼리
SELECT /*+ORDERED INDEX_DESC(A IX_CERR_INQ_INFO_03) INDEX(B PK_CRESP_KNWLG_INFO) INDEX(C PK_CEMP_INFO)*/
A.CERR_SEQ
,B.KNWLG_TITLE
,A.CERR_INQ_TEXT
,A.REGR_POS_ORG_ID
,FN_CCCM_COFC_NAME(A.REGR_POS_ORG_ID) AS REGR_POS_ORG_NAME
,C.EMP_NAME
,A.REG_DATE
,A.INQ_TRNRS_CD
,FN_CCMS_GET_CDNAME('CI', 'E386', A.INQ_TRNRS_CD) AS INQ_TRNRS_NAME
,ROWIDTOCHAR(A.ROWID) RID
,TO_CHAR(A.REG_DATE,'YYYYMMDDHH24MISS')||INQ_TRNRS_CD NEXTKEY
FROM TB_CERR_INQ_INFO A
,TB_CRESP_KNWLG_INFO B
,TB_CEMP_INFO C
WHERE A.RESP_KNWLG_ID=B.RESP_KNWLG_ID
AND A.REGR_ID=C.EMP_ID
AND A.REG_DATE BETWEEN TO_DATE(:fromDate,'YYYYMMDDHH24MISS')
AND TO_DATE(:toDate || '235959','YYYYMMDDHH24MISS')
AND (:NEXTKEY IS NULL OR (TO_CHAR(A.REG_DATE,'YYYYMMDDHH24MISS')||INQ_TRNRS_CD <:NEXTKEY
OR (TO_CHAR(A.REG_DATE,'YYYYMMDDHH24MISS')||INQ_TRNRS_CD =:NEXTKEY
AND A.ROWID < :RID)))
AND ROWNUM<=:SEARCHCNT
--------------
두번째 쿼리
SELECT /*+ORDERED INDEX_DESC(A IX_CERR_INQ_INFO_03) INDEX(B PK_CRESP_KNWLG_INFO) */
A.CERR_SEQ
,B.KNWLG_TITLE
,A.CERR_INQ_TEXT
,A.REGR_POS_ORG_ID
,FN_CCCM_COFC_NAME(A.REGR_POS_ORG_ID) AS REGR_POS_ORG_NAME
,(SELECT /*+ INDEX(C PK_CEMP_INFO) */
EMP_NAME
FROM TB_CEMP_INFO C
WHERE EMP_ID=A.REGR_ID)
,A.REG_DATE
,A.INQ_TRNRS_CD
,FN_CCMS_GET_CDNAME('CI', 'E386', A.INQ_TRNRS_CD) AS INQ_TRNRS_NAME
,ROWIDTOCHAR(A.ROWID) RID
,TO_CHAR(A.REG_DATE,'YYYYMMDDHH24MISS')||INQ_TRNRS_CD NEXTKEY
FROM TB_CERR_INQ_INFO A
,TB_CRESP_KNWLG_INFO B
WHERE A.RESP_KNWLG_ID=B.RESP_KNWLG_ID
AND A.REG_DATE BETWEEN TO_DATE(:fromDate,'YYYYMMDDHH24MISS')
AND TO_DATE(:toDate || '235959','YYYYMMDDHH24MISS')
AND (:NEXTKEY IS NULL OR (TO_CHAR(A.REG_DATE,'YYYYMMDDHH24MISS')||INQ_TRNRS_CD <:NEXTKEY
OR (TO_CHAR(A.REG_DATE,'YYYYMMDDHH24MISS')||INQ_TRNRS_CD =:NEXTKEY
AND A.ROWID < :RID)))
AND ROWNUM<=:SEARCHCNT
-------------
세번째 쿼리
SELECT /*+ORDERED INDEX_DESC(A IX_CERR_INQ_INFO_03) */
A.CERR_SEQ
,(SELECT /*+ INDEX(B PK_CRESP_KNWLG_INFO) */ KNWLG_TITLE
FROM TB_CRESP_KNWLG_INFO
WHERE RESP_KNWLG_ID=A.RESP_KNWLG_ID)
,A.CERR_INQ_TEXT
,A.REGR_POS_ORG_ID
,FN_CCCM_COFC_NAME(A.REGR_POS_ORG_ID) AS REGR_POS_ORG_NAME
,(SELECT /*+ INDEX(C PK_CEMP_INFO) */
EMP_NAME
FROM TB_CEMP_INFO C
WHERE EMP_ID=A.REGR_ID)
,A.REG_DATE
,A.INQ_TRNRS_CD
,FN_CCMS_GET_CDNAME('CI', 'E386', A.INQ_TRNRS_CD) AS INQ_TRNRS_NAME
,ROWIDTOCHAR(A.ROWID) RID
,TO_CHAR(A.REG_DATE,'YYYYMMDDHH24MISS')||INQ_TRNRS_CD NEXTKEY
FROM TB_CERR_INQ_INFO A
WHERE A.REG_DATE BETWEEN TO_DATE(:fromDate,'YYYYMMDDHH24MISS')
AND TO_DATE(:toDate || '235959','YYYYMMDDHH24MISS')
AND (:NEXTKEY IS NULL OR (TO_CHAR(A.REG_DATE,'YYYYMMDDHH24MISS')||INQ_TRNRS_CD <:NEXTKEY
OR (TO_CHAR(A.REG_DATE,'YYYYMMDDHH24MISS')||INQ_TRNRS_CD =:NEXTKEY
AND A.ROWID < :RID)))
AND ROWNUM<=:SEARCHCNT
댓글 영역
획득법
① NFT 발행
작성한 게시물을 NFT로 발행하면 일주일 동안 사용할 수 있습니다. (최초 1회)
② NFT 구매
다른 이용자의 NFT를 구매하면 한 달 동안 사용할 수 있습니다. (구매 시마다 갱신)
사용법
디시콘에서지갑연결시 바로 사용 가능합니다.