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
번호 제목 글쓴이 날짜 조회 수
공지 SQLGate for CUBRID 영구 무료 라이선스 제공 file admin 2020.04.09 4246
3856 브로커(CAS)수 질문드립니다! 8 요시니 2023.06.05 149
3855 데이터 이관 문의입니다. 1 kipo0821 2023.05.30 125
3854 8.4.4 charset. Collation 확인 방법 네오랜덤 2023.05.24 175
3853 8.4.4버젼 charset 확인 3 네오랜덤 2023.05.23 182
3852 쿼리 속도 차이 질문 1 하얀미스 2023.05.18 139
3851 spring boot 에서 HikariPool-1 - Driver does not support get/set network timeout for connections. (java.lang.UnsupportedOperationException) 질문 드립니다. 3 kjaminam 2023.05.18 724
3850 cci 프로그래밍에서 DB LINK 관련 문의 4 jjune1206 2023.05.18 123
3849 큐브리드 매니저 실행이 오류 1 file 청주시청 2023.05.18 97
3848 ddl 추출 1 네오랜덤 2023.05.17 94
3847 하나의 쿼리에서 복수 테이블 업데이트 방법 문의 4 도담도담 2023.05.17 122
3846 cubrid driver 설치 문의 1 고구망구망 2023.05.08 423
3845 큐브리드 매니저 접속 이 안됩니다. 확인 요청 드립니다. 1 뿡이 2023.04.28 127
3844 Fk값 가져오기 2 file 네오랜덤 2023.04.24 159
3843 서버 메모리 교체 및 ha 상 데이터 삭제 절차 1 레피엘 2023.04.20 105
3842 java stored procedure 에 loadjava 로 jar 파일 로드 시 java.lang.ClassNotFoundException 에러 문의 3 개미가불쌍해 2023.04.18 138
3841 Cubrid stored procedure 스케쥴 등록 형식 2 Roy 2023.04.17 104
3840 암호화 함수 MDB_ENC 질문입니다 1 BE-DEV 2023.04.17 79
3839 auto_increment 추가 방법 문의 1 부패방지운영팀 2023.04.14 239
3838 CUBRID 사용자 계정 생성 관련 문의 1 몽키스패너 2023.04.14 127
3837 order by 이후 rownum이 의도와 다르게 찍힙니다. 2 바보똥개 2023.04.14 134
Board Pagination Prev 1 2 3 4 5 6 7 8 9 10 11 ... 199 Next
/ 199

Contact Cubrid

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