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 55
공지 SQLGate for CUBRID 영구 무료 라이선스 제공 file admin 2020.04.09 4461
1015 이중환 관련 질문 드립니다. 2 jojosale 2013.12.05 8402
1014 이진 데이터를 Stored Procedure에 넘기는 방법 7 hyperhand 2009.12.23 14060
1013 이클립스 DBViewer에서 1분정도 지나면 컨넥션이 끊어집니다. 2 천타에 허리한번 펴자 ㅡㅡ; 2009.06.04 16332
1012 인덱스 scan 문의합니다 1 모모 2020.10.07 202
1011 인덱스 관련 문의입니다. 1 wook 2020.09.10 72
1010 인덱스 사용 관련하여 문의드립니다. 1 neighbor 2023.12.12 113
1009 인덱스 함수 생성 문의 1 후후후후후후후후 2021.09.01 433
1008 인덱스가 가끔 깨집니다. 도와주세요. 2 훈이아빠 2017.11.21 1649
1007 인덱스가 많이 설정된 데이터 삭제시 오래 걸리는지 여부 1 나라디 2022.06.29 187
» 인덱스가 실행이 안되는 것 같아서 요청 드려 봅니다. 3 취우다 2017.04.15 9768
1005 인덱스를 엉뚱한 걸 타고 있습니다??! 9 file Philip Park 2020.11.26 299
1004 인서트 시 IX_LOCK 문의 1 joke7 2016.03.14 7713
1003 인코딩 관련 1 song 2008.12.17 21518
1002 인코딩 문의. 1 우페 2008.12.09 19218
1001 인코딩 문제와 권한 문제입니다. 1 싸댕 2016.12.15 15534
1000 인터프리터 로그 남기는 설정 문의드립니다. 1 sspark 2018.01.10 236
999 일반사용자 시스템 테이블 접근 권한 제어관련 질문드립니다. 1 dkhwang 2020.07.03 316
998 일시적 임시 볼륨이 계속 증가하는 현상 1 secret ssk 2015.11.07 8
997 일정시간 지나면 접속 안됨 12 chocob 2015.08.12 8829
996 일정한 주기마다 비밀번호를 바꾸는 설정을 하고 싶습니다. 1 dunkin23 2018.01.10 420
Board Pagination Prev 1 ... 145 146 147 148 149 150 151 152 153 154 ... 200 Next
/ 200

Contact Cubrid

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