Background Image

FORUM

조회 수 9764 추천 수 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
번호 제목 글쓴이 날짜 조회 수
공지 SQLGate for CUBRID 영구 무료 라이선스 제공 file admin 2020.04.09 4443
2567 linked server 1 설화초 2017.05.27 3697
2566 Oracle -> Cubrid Migration 시 문제 문의드립니다. 1 바보똥개 2017.05.25 3857
2565 cubrid db연결관련 질문드립니다. 9 안녕하세여 2017.05.23 5008
2564 큐브리드 exception 발생 1 file 끄적이판 2017.05.23 3844
2563 큐브리드 매니저 다운로드 안됨 문의 1 file 환돌 2017.05.15 3810
2562 OPENROWSET EXCEL SELECT 문의 2 강창순 2017.05.13 3979
2561 Ado.NET : Cannot connect to CUBRID CAS 오류 2 websiter 2017.05.05 57830
2560 타서버의 풀백업 파일을 임포트 하는 방법이 뭔가요? 2 취우다 2017.04.27 6028
2559 stored procedure와 함께 left outer join 하면 Assertion 'false' failed 발생 5 장두 2017.04.27 6448
2558 PHP 7.0 지원 여부 1 핑핑크 2017.04.27 5784
2557 큐브리드 DB 생성시 오류 질문드립니다. 4 file 석현진 2017.04.25 6420
2556 (댓글 질문등록 했습니다.)이전글, 다음글 기능(LAG, LEAD) ORDER BY절 FOR ORDERBY_NUM() 추가해도 그대로 입니다 3 취우다 2017.04.19 5958
2555 이전글, 다음글 기능(LAG, LEAD) 과 인덱스 가능 여부나 SQL 개선 질문 드립니다. 1 취우다 2017.04.19 6828
» 인덱스가 실행이 안되는 것 같아서 요청 드려 봅니다. 3 취우다 2017.04.15 9764
2553 C# ADO.NET 이용했을떄 문제 1 보람이 2017.04.14 8219
2552 clob 타입 사용문의 1 최범규 2017.04.14 9489
2551 instr 함수 문의 1 secret 최범규 2017.04.13 6
2550 clob 입력에 대한 문의 2 secret 최범규 2017.04.13 10
2549 단일운용, HA로 전환시 속도 문제? 4 라면 2017.04.12 8311
2548 Java VM is not running. 3 장두 2017.04.11 9067
Board Pagination Prev 1 ... 67 68 69 70 71 72 73 74 75 76 ... 200 Next
/ 200

Contact Cubrid

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