Background Image

FORUM

조회 수 9773 추천 수 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;


  1. No Image notice by admin 2024/04/23 by admin
    Views 122 

    CUBRID 사용자를 위한 DBeaver 도구 출시 안내

  2. SQLGate for CUBRID 영구 무료 라이선스 제공

  3. 외래키가 있을때 선택조회 안되는 부분 문의

  4. 중복생성 결과로 인한 질문드립니다.

  5. MyBatis에서 익명 블럭(Anonymous Block) 사용시

  6. 큐브리드 function 사용시 Java VM is not running.

  7. 큐브리드 매니저에서 group_concat 사용시 결과값이 null로만 표시됩니다.

  8. 오라클의 with 테이블명 as 구문은 큐브리드에서 사용이 안되는지요?

  9. CUBRID Manager 9.3.6.007 (64bit) 문제 추가 문의

  10. Java VM is not running.

  11. 단일운용, HA로 전환시 속도 문제?

  12. clob 입력에 대한 문의

  13. instr 함수 문의

  14. clob 타입 사용문의

  15. C# ADO.NET 이용했을떄 문제

  16. 인덱스가 실행이 안되는 것 같아서 요청 드려 봅니다.

  17. 이전글, 다음글 기능(LAG, LEAD) 과 인덱스 가능 여부나 SQL 개선 질문 드립니다.

  18. (댓글 질문등록 했습니다.)이전글, 다음글 기능(LAG, LEAD) ORDER BY절 FOR ORDERBY_NUM() 추가해도 그대로 입니다

  19. 큐브리드 DB 생성시 오류 질문드립니다.

  20. PHP 7.0 지원 여부

  21. stored procedure와 함께 left outer join 하면 Assertion 'false' failed 발생

  22. 타서버의 풀백업 파일을 임포트 하는 방법이 뭔가요?

Board Pagination Prev 1 ... 123 124 125 126 127 128 129 130 131 132 ... 201 Next
/ 201

Contact Cubrid

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