Background Image

FORUM

?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄

이전글, 다음글에 대한 INDEX 가능 여부나 SQL 개선 방법이 있는지 부탁 드립니다.

 - 게시글 목록 SQL 이 상세보기 SQL 보다 더 빠른 결과가 나옵니다.



<질문 SQL : 게시글 상세 보기에서....>

SELECT * FROM (
   SELECT
    LAG(MSG_SEQ,1) OVER(ORDER BY NOTICE_YN DESC, REG_YMD DESC, MSG_GRP_NO DESC, MSG_ORD) AS PREV_SEQ,  
    LEAD(MSG_SEQ,1) OVER(ORDER BY NOTICE_YN DESC, REG_YMD DESC, MSG_GRP_NO DESC, MSG_ORD) AS NEXT_SEQ,  
    MSG_SEQ,
    BBS_TITLE,
    BBS_CONTENT,
    REG_ID,
    REG_DT
   FROM BBS_NOTICE_MSG_TB M
   WHERE BBS_CD='notice'
    AND DEL_YN='n'
    AND BBS_TITLE LIKE '%'||'시설'||'%'
)
WHERE MSG_SEQ=20842   


1번째 질의[ 0.17 초 , 검색 건수 : 1 ]


--------------------------------------------------
SHOW TRACE;
--------------------------------------------------

Query Plan:
  TABLE SCAN (M)

  rewritten query: (select lag(M.MSG_SEQ, 1, null) over (order by 10 desc , 11 desc , 12 desc , 13), lead(M.MSG_SEQ, 1, null) over (order by 10 desc , 11 desc , 12 desc , 13), M.MSG_SEQ, M.BBS_TITLE, M.REG_ID, M.REG_DT from BBS_NOTICE_MSG_TB M where M.BBS_TITLE like  ?:1  and M.DEL_YN= ?:2  and M.BBS_CD= ?:3 )

  TABLE SCAN (__t1)

  rewritten query: select [__t1].PREV_SEQ, [__t1].NEXT_SEQ, [__t1].MSG_SEQ, [__t1].BBS_TITLE, [__t1].REG_ID, [__t1].REG_DT from (select lag(M.MSG_SEQ, 1, null) over (order by 10 desc , 11 desc , 12 desc , 13) as [PREV_SEQ], lead(M.MSG_SEQ, 1, null) over (order by 10 desc , 11 desc , 12 desc , 13) as [NEXT_SEQ], M.MSG_SEQ, M.BBS_TITLE, M.REG_ID, M.REG_DT from BBS_NOTICE_MSG_TB M where M.BBS_TITLE like  ?:1  and M.DEL_YN= ?:2  and M.BBS_CD= ?:3 ) [__t1] (PREV_SEQ, NEXT_SEQ, MSG_SEQ, BBS_TITLE, REG_ID, REG_DT) where [__t1].MSG_SEQ= ?:0


Trace Statistics:
  SELECT (time: 155, fetch: 12900, ioread: 0)
    SCAN (temp time: 0, fetch: 131, ioread: 0, readrows: 354, rows: 1)
    SUBQUERY (uncorrelated)
      SELECT (time: 155, fetch: 12769, ioread: 0)
        SCAN (table: bbs_notice_msg_tb), (heap time: 83, fetch: 11821, ioread: 0, readrows: 19651, rows: 354)





============================================================================

<비교 SQL 게시글 목록>

SELECT ORDERBY_NUM() ROWNO, M.*
FROM BBS_notice_MSG_TB M
WHERE BBS_CD='notice'
 AND DEL_YN='n'
 AND BBS_TITLE LIKE '%'||'시설'||'%'
ORDER BY NOTICE_YN DESC, REG_YMD DESC, MSG_GRP_NO DESC, MSG_ORD
FOR ORDERBY_NUM() BETWEEN 1 AND 10


1번째 질의[ 0.034 초 , 검색 건수 : 10 ]


--------------------------------------------------
SHOW TRACE;
--------------------------------------------------

Query Plan:
  INDEX SCAN (M.idx_bbs_notice_msg_tb_orderby_regymd) ()
  skip order by: true

  rewritten query: select orderby_num(), M.msg_seq, M.bbs_cd, M.bbs_gcd, M.cate_cd1, M.cate_cd2, M.cate_cd3, M.msg_depth, M.msg_grp_no, M.msg_ord, M.bbs_title, M.msg_pw, M.tel_no, M.cell_no, M.email, M.addr1, M.addr2, M.zip_cd, M.spare1, M.spare2, M.spare3, M.spare4, M.spare5, M.spare6, M.spare7, M.spare8, M.spare9, M.spare10, M.view_cnt, M.notice_yn, M.notice_end_dt, M.public_yn, M.display_yn, M.display_start_dt, M.display_end_dt, M.reg_id, M.reg_dept_nm, M.reg_nm, M.reg_div, M.reg_ip, M.reg_dt, M.edit_dt, M.pin_no, M.del_yn, M.reply_mthd, M.dept_cd1, M.reply_st1, M.dept_cd2, M.reply_st2, M.dept_cd3, M.reply_st3, M.bbs_content, M.bbs_content_notag, M.bbs_wizwig_yn, M.msg_history, M.copyright_div, M.reg_ymd from BBS_notice_MSG_TB M where M.BBS_TITLE like  ?:0  and M.DEL_YN= ?:1  and M.BBS_CD= ?:2  order by 30 desc , 57 desc , 9 desc , 10 for orderby_num() between  ?:3  and  ?:4

Trace Statistics:
  SELECT (time: 14, fetch: 1723, ioread: 0)
    SCAN (index: bbs_notice_msg_tb.idx_bbs_notice_msg_tb_orderby_regymd), (btree time: 13, fetch: 1713, ioread: 0, readkeys: 8192, filteredkeys: 8192, rows: 1294) (lookup time: 8, rows: 11)


  • ?
    엄기호 2017.04.19 19:28

    안녕하세요.

    큐브리드를 이용해주셔서 감사드립니다.


    비즈니스 로직을 보면 목록을 본 다음 상세보기 이므로

    게시글 목록 쿼리문을 보면 ORDER BY절 FOR ORDERBY_NUM()을 사용 했으므로

    인라인 뷰의 쿼리문에는 ORDER BY절 FOR ORDERBY_NUM()이 빠져 있습니다.

    ORDER BY절 FOR ORDERBY_NUM()을 추가하여 사용하시면 됩니다.


List of Articles
번호 제목 글쓴이 날짜 조회 수
공지 CUBRID 사용자를 위한 DBeaver 도구 출시 안내 admin 2024.04.23 48
공지 SQLGate for CUBRID 영구 무료 라이선스 제공 file admin 2020.04.09 4458
3874 특정 컬럼 order by 시 한글 > 숫자 > 영문 순으로 정렬 방법? 2 Qubrid 2022.12.01 441
3873 특정 글자 깨짐 현상 문의 3 file 용이1 2013.10.22 14457
3872 특정 값 우선 정렬 3 drunkenascii 2023.10.11 66
3871 특정 Table만 백업하는 방법 1 nagh 2021.01.06 538
3870 특정 CAS가 재시작이 되지 않습니다. 1 file 종이 2015.11.03 4506
3869 특수문자 포함 LIKE검색 1 SEO 2023.03.06 155
3868 특수문자 컬럽값 관련 Python 오류 (*추가 - 증상재현 관련) 오수범 2022.09.15 110
3867 특수문자 깨짐 1 어려워 2019.03.21 1185
3866 트리거에서 함수 호출 관련 문의 1 두꺼비꿈 2013.03.29 7349
3865 트리거에 여러개의 execute 문을 사용할 수 있는지요? 1 푸르른하늘 2020.10.13 363
3864 트리거에 대해서 1 바람바람 2012.11.20 6296
3863 트리거, 프로시져 조회 문의 1 해리맥 2021.12.23 539
3862 트리거 질문입니다. 3 퓨전남 2018.05.15 738
3861 트리거 질문드립니다. 1 서준빠 2020.01.10 253
3860 트리거 질문 드립니다.. 너무 안되서 이렇게 질문 올려요 ㅠ 2 덴드로비움 2017.10.24 1236
3859 트리거 조건문 질문. 4 기린종인 2012.02.19 8709
3858 트리거 조건 문제 1 yoon 2010.04.16 13039
3857 트리거 재 문의(확실히 아시는분만 답변 바랍니다) 2 secret joke7 2015.12.22 89
3856 트리거 작성 도중 알 수 없는 오류가 발생했습니다. 1 코코밥 2017.11.09 342
3855 트리거 생성시 오류 질문 2 나비다 2010.04.24 10267
Board Pagination Prev 1 2 3 4 5 6 7 8 9 10 11 ... 200 Next
/ 200

Contact Cubrid

대표전화 070-4077-2110 / 기술문의 070-4077-2113 / 영업문의 070-4077-2112 / Email. contact_at_cubrid.com
Contact Sales