Background Image

FORUM

조회 수 9768 추천 수 0 댓글 3
?

단축키

Prev이전 문서

Next다음 문서

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


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

인덱스가 실행이 안되는 것 같아서 요청 드려 봅니다. skip order by 가 안되네요 ㅠㅠ


<생성 index>

CREATE INDEX IDX_WORK_BOOK_TB_ORDER ON WORK_BOOK_TB(INST_CD DESC , WORKER_TEAM DESC, TASK_SPECIFIC  DESC );



<select sql>

1번 )

SELECT   *
FROM WORK_BOOK_TB
ORDER BY  INST_CD DESC , WORKER_TEAM DESC, TASK_SPECIFIC  DESC
LIMIT 20


2번 )

SELECT   *
FROM WORK_BOOK_TB USE  INDEX (IDX_WORK_BOOK_TB_ORDER)
ORDER BY  INST_CD DESC , WORKER_TEAM DESC, TASK_SPECIFIC  DESC
LIMIT 20


3번)

SELECT   *
FROM WORK_BOOK_TB
USING INDEX IDX_WORK_BOOK_TB_ORDER
ORDER BY  INST_CD DESC , WORKER_TEAM DESC, TASK_SPECIFIC  DESC
LIMIT 20


==> 뭘해도 소요 시간 2.13초




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

Query Plan:
  SORT (order by)
    TABLE SCAN (WORK_BOOK_TB)

  rewritten query: select WORK_BOOK_TB.workbook_seq, WORK_BOOK_TB.workbook_ymd, WORK_BOOK_TB.workbook_ord, WORK_BOOK_TB.worker_nm, WORK_BOOK_TB.worker_position, WORK_BOOK_TB.worker_class, WORK_BOOK_TB.worker_team, WORK_BOOK_TB.inst_cd, WORK_BOOK_TB.task_specific, WORK_BOOK_TB.task_common, WORK_BOOK_TB.task_common_specific, WORK_BOOK_TB.office_work_div, WORK_BOOK_TB.work_times, WORK_BOOK_TB.time_required, WORK_BOOK_TB.self_appraisal, WORK_BOOK_TB.add_working, WORK_BOOK_TB.reg_dt, WORK_BOOK_TB.reg_id, WORK_BOOK_TB.updt_dt, WORK_BOOK_TB.del_yn, WORK_BOOK_TB.del_dt from WORK_BOOK_TB WORK_BOOK_TB order by 8 desc , 7 desc , 9 desc  for orderby_num()<= ?:0

Trace Statistics:
  SELECT (time: 2131, fetch: 5705, ioread: 0)
    SCAN (table: work_book_tb), (heap time: 1195, fetch: 5700, ioread: 0, readrows: 313631, rows: 313631)
    ORDERBY (time: 0, topnsort: true)





  • ?
    김창휘 2017.04.18 00:06

    안녕하세요.


    27만건 테이블로 동일 유형으로 테스트를 진행했습니다.


    SELECT /*+ RECOMPILE */
        *
        FROM
         tn_mber_back
         USE INDEX (idx_tn_mber_back_01)
        ORDER BY
         unique_id DESC, mber_id desc,mber_nm desc
        LIMIT 20;


    Query Plan:
      INDEX SCAN (tn_mber_back.idx_tn_mber_back_01) ()
      skip order by: true

      rewritten query: select tn_mber_back.unique_id, tn_mber_back.mber_id, tn_mber_back.[password], tn_mber_back.mber_nm, tn_mber_back.virtl_idntfc_code, tn_mber_back.dplct_cnfirm_code, tn_mber_back.brthdy, tn_mber_back.sexdstn, tn_mber_back.telno, tn_mber_back.email, tn_mber_back.adres, tn_mber_back.pbsvnt_at, tn_mber_back.child_at, tn_mber_back.frgnr_at, tn_mber_back.email_acnt_reqst_at, tn_mber_back.drmncy_at, tn_mber_back.regist_ip, tn_mber_back.updt_ip, tn_mber_back.sbscrb_dt, tn_mber_back.updt_dt, tn_mber_back.password_updt_dt, tn_mber_back.password_extn_at, tn_mber_back.mntr_staff_group, tn_mber_back.water_at, tn_mber_back.accr, tn_mber_back.login_fail_cnt from tn_mber_back tn_mber_back using index tn_mber_back.idx_tn_mber_back_01 order by 1 desc , 2 desc , 4 desc  for orderby_num()<= ?:0

    Trace Statistics:
      SELECT (time: 0, fetch: 24, ioread: 0)
        SCAN (index: tn_mber_back.idx_tn_mber_back_01), (btree time: 0, fetch: 23, ioread: 0, readkeys: 20, filteredkeys: 20, rows: 20) (lookup time: 0, rows: 20)


    인덱스 생성 후 통계정보를 갱신해 보시고 /*+ RECOMPILE */ 옵션을 추가 후 수행해 보시길 바랍니다.


    UPDATE STATISTICS ON WORK_BOOK_TB WITH FULLSCAN;


    그리고, 해당 테이블의 구조(DDL 또는 컬럼 Layout 정보) 정보를 보내주시길 바랍니다.


    UPDATE STATISTICS ON  WORK_BOOK_TB  WITH FULLSCAN;




  • ?
    취우다 2017.04.18 00:38

    감사합니다.

    해당 내용을 적용을 해도 크게 개선이 되지 않길래 DDL 을 보내려다가 확인 했습니다.

    INDEX 필드가 NULL 허용인 경우는 INDEX가 동작하지 않는 거네요.. 실제 DB 데이터에는 NULL 값이 없지만 DDL에서 NULL 허용이 되어 있어서 skip order by 되지 않았습니다.

  • ?
    김창휘 2017.04.18 01:29

    안녕하세요.


    말씀하신대로 첫 번째 컬럼이 NULL인경우(나머지 컬럼은 상관 없음)  skip order by 기능이 안되지만 아래의 예시처럼 임의의 조건을 추가해서 강제적으로 인덱스를 사용할 수 있게 할 수 있습니다.


     SELECT /*+ RECOMPILE */
        *
        FROM
         tn_mber_back
         USE INDEX (idx_tn_mber_back_01)
        --WHERE unique_id IS NOT null  /* FILTER */
         WHERE unique_id >= ' '   /* ONLY INDEX SCAN */
        ORDER BY
         unique_id DESC, mber_id desc,mber_nm desc
        LIMIT 20;


List of Articles
번호 제목 글쓴이 날짜 조회 수
공지 CUBRID 사용자를 위한 DBeaver 도구 출시 안내 admin 2024.04.23 51
공지 SQLGate for CUBRID 영구 무료 라이선스 제공 file admin 2020.04.09 4458
1454 백업파일을 이용하여 데이터베이스가 없는 다른 서버에서 복구하는 방법 질문. 1 김우람 2009.03.19 12976
1453 백업한 DB를 다른 이름의 DB로 풀고 싶을때.... 1 유니콘 2011.03.21 8842
1452 버전 문의드립니다 1 ka 2018.10.11 263
1451 버전 업그레이드 방법 2 초짜큐브 2010.05.05 9432
1450 버전 업데이트 후 다른 인덱스 타는 문제 1 종이 2013.03.05 5618
1449 버전업 될때마다 지우고.. 1 엔가 2009.05.27 10063
1448 버전에 대한 취약점 및 EOS 관련 문의 1 KSH_혁 2020.01.29 252
1447 버전에 따른 statdump 사용 2 secret 오니오니 2013.11.22 7
1446 변환 작업중에..질문좀 드리겠습니다.. 1 마리오네트 2018.10.08 199
1445 별도의 패키지 프로그램 제작시 설치파일 3 강아지60 2016.05.07 9132
1444 보관로그 관련 2 벅지 2009.02.23 13432
1443 보관로그(아카이브로그) 자동삭제 질문 드립니다 1 T군 2020.10.13 399
1442 보안관련 질문입니다. 1 secret goguemi 2014.06.18 6
1441 보호된 메모리를 읽거나 쓰려고 했습니다.. 오류가 재발합니다 2 모비23 2019.02.19 9139
1440 보호된 메모리를 읽거나 쓰려고 했습니다.... 2 file 모비23 2019.01.28 1190
1439 복구가 일부만 되었습니다. 3 도우너19 2022.05.16 182
1438 복사한 테이블 조회 2 나라디 2020.06.04 96
1437 복재 기능의 SELECT 분산 관련 질문 드립니다. 4 kkckc 2009.02.21 16934
1436 복제 DB가 생성이 되질 않습니다... 긴급!! 2 닉넴 2011.05.27 10662
1435 복제 문의해요 3 삽질쟁이 2009.06.28 11438
Board Pagination Prev 1 ... 123 124 125 126 127 128 129 130 131 132 ... 200 Next
/ 200

Contact Cubrid

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