Background Image

FORUM

조회 수 6695 추천 수 0 댓글 8
?

단축키

Prev이전 문서

Next다음 문서

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

* 질문 등록 시 다음의 내용을 꼭 기입하여 주세요.
OS
Window 2008 64bit
CUBRID Ver.
 CUBRID 9.3 (9.3.0.0206) (64bit release build for Windows_NT) (May 14 2014 23:34:10)
CUBRID TOOL Ver.
 CUBRID 매니저 2014.03 빌드 0458  (64bit)
응용 환경(API)
java

* CUBRID 응용 오류, SQL 오류 또는 SQL 튜닝 관련된 문의는 반드시 다음의 내용을 추가해 주세요. 비밀글이나 비밀 댓글도 가능합니다.
* 저희가 상황을 이해하고, 재현이 가능해야 알 수 있는 문제들이 많습니다. 가능한 정보/정황들을 부탁합니다.
에러 내용 및 재현 방법 재현 가능한 Source와 SQL
관련 테이블(인덱스, 키정보 포함) 정보 CUBRID 홈 디렉토리 아래 log 디렉토리 압축


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

안녕하세요.


IN 쿼리 사용중 궁금한점이 있어 문의드립니다.


table_A 테이블은 마스터 테이블에 딸린 1-N 테이블 입니다.


아래의 쿼리는 계약건에 딸린 계산서 테이블 자료중 마지막 처리건의 상태값을 조회하기 위한 쿼리입니다.



SELECT pubdate
FROM table_A
WHERE serialnum IN ('100001-T20131203-1521')



SELECT pubdate
FROM table_A
WHERE table_A IN (SELECT MAX(serialnum) FROM table_A WHERE contract_key = 7135)



첫번째 쿼리와 두번째 쿼리는 같은 데이터를 리턴하고,   serialnum  열이 인덱스를 정상적으로 타고 있습니다.


문제는 두번째 쿼리가 비용이 첫번째 쿼리보다 수백배는 많이 듭니다.


100건 정도 자료를 조회를 할 경우 기존에 MSSQL에서는 운영시에는 1초 이내에 나오던 결과값이 3초 정도 걸려서 조회가 됩니다.


잘못된 방법으로 쿼리를 사용하는것인지, 다른 조회 방법이 있는지 확인 부탁드립니다.



감사합니다.

  • ?
    이용미 2015.04.07 02:34
    안녕하세요.

    첫번째 질의와 두번째 질의가 같은 데이터를 리턴한다고 하여도, 어떠한 방법으로 결과값을 출력해 내는지에 따라 질의 수행 시 발생하는 비용에는 차이가 있습니다.

    table_A의 serialnum 컬럼에 인덱스가 생성되어 있다면, 말씀하신 두 질의 중 다른 부분은 서브쿼리의 유무 인데요.
    두번째 질의에서 사용된 서브쿼리의 조건절에 사용된 contract_key 컬럼에 인덱스가 생성되어 있는지 확인 부탁 드립니다.

    만약 인덱스가 생성되어 있다면, contract_key의 분포도는 어떠한지도 확인 부탁 드립니다.

    추가로, 위에 올려주신 내용 만으로는 정확한 성능 이슈 확인이 어렵습니다. 성능 관련 문의 시, 테이블 스키마 및 질의 수행 계획도 올려주시면 분석이 더 쉬울 것으로 보입니다. 

    감사합니다.
  • ?
    종이 2015.04.07 19:49 SECRET

    "비밀글입니다."

  • ?
    이용미 2015.04.07 20:40

    안녕하세요. 댓글 감사합니다.


    일단, 두번째 질의에 대한 질의 수행 계획을 보았을 때, 전체 비용 자체는 크지 않습니다.


    현재로서는 100건 정도의 자료를 조회하는 경우 소요된 시간이 차이가 가는 이유는, 질의 수행 시간보다는 결과값이 응용에 전달되는 시간 즉 통신 비용에 많이 소요되었을 것이라고 판단됩니다.


    위 질의를 조금 더 개선하기 위해서는 table_A의 contract_key, serialnum 컬럼에 아래와 같이 복합 인덱스를 생성하여 확인해 보는 것은 어떨까 합니다.

    CREATE INDEX I_TABLE_A_CONTRACT_KEY_SERIALNUM ON TABLE_A(CONTRACT_KEY, SERIALNUM) 

    인덱스 생성 후, 번거로우시겠지만 실행 계획을 다시 한번 올려주셨으면 합니다.


    감사합니다.

  • ?
    종이 2015.04.08 02:22 SECRET

    "비밀글입니다."

  • ?
    이용미 2015.04.08 18:42
    인덱스 삭제 후에도 같은 비용이라면 인덱스 생성 및 삭제로 인하여 통계 정보가 갱신되어 질의 수행 계획이 변경되었을 가능성이 있습니다. 혹 가능하시면 인덱스 삭제 후, 질의 수행 계획을 첨부해 주실 수 있으실런지요?

    추가로 IN 조건식의 경우, 실제 질의가 수행 될 때, OR 절로 변경되어 수행됩니다.
    그렇기 때문에 IN 조건식에 조건이 많이 들어가는 경우, 많은 수의 OR절이 수행되는 것이기 때문에 성능에 영향을 미칠 수 있습니다.

    감사합니다.
  • ?
    종이 2015.04.08 23:22 SECRET

    "비밀글입니다."

  • ?
    이용미 2015.04.08 23:50

    안녕하세요. 첨부해 주신 질의 수행 계획 감사드립니다.


    인덱스 추가 생성 전에는 인덱스를 사용하면서 sel 값이 0.00021561인 것에서 인덱스 생성 후에는 Coverd Index를 사용하며 sel 값이 0.00019305으로 줄어들었으나 비용 개선은 크게 차이가 나지 않았습니다.

    그러나 인덱스 생성으로 인하여 table_A에 대한 통계 정보가 갱신되면서 기존 많은 비용을 차지하였던 [Index Join] 부분이 기존 sel 1에서 sel 0.000142511로 비용이 개선되었고, 인덱스 제거 후에도 개선된 비용을 유지하고 있는 것으로 보입니다.


    감사합니다.


  • ?
    종이 2015.04.08 23:58

    인덱스 생성 및 쿼리 작성에 많은 도움이 되었습니다.

     

    감사합니다.


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

    Date2024.04.23 Byadmin Views70
    read more
  2. SQLGate for CUBRID 영구 무료 라이선스 제공

    Date2020.04.09 Byadmin Views4465
    read more
  3. 오라클 -> 큐브리드 작업중 DB JOB 관련

    Date2015.05.26 By아코 Views9
    Read More
  4. Windows Server 버전별 설치가능여부 확인 문의

    Date2015.05.26 By언제나즐거운나 Views7255
    Read More
  5. 문의

    Date2015.05.21 By조규 Views12
    Read More
  6. cci_connect 함수를 이용하여 db 접속 방법

    Date2015.05.21 By뀨브리드 Views5367
    Read More
  7. jre 업데이트 후 큐브리드 쿼리브라우저가 실행이안됩니다.

    Date2015.05.20 Bykkndo2 Views7488
    Read More
  8. cubrid 브로커 올리면 cpu 사용율 100프로 됩니다 확인 부탁드리겠습니다.

    Date2015.05.12 By아름다운음악 Views14
    Read More
  9. cubrid manager 접속에러

    Date2015.05.12 By초보개발자임 Views4305
    Read More
  10. 문의

    Date2015.05.11 By수진이2 Views12
    Read More
  11. 문의

    Date2015.05.09 By수진이2 Views9
    Read More
  12. 큐브리드 설치시 브로커 실행 오류

    Date2015.05.08 By아름다운음악 Views8361
    Read More
  13. cubrid 상태 모니터링

    Date2015.05.04 By조금느린아이 Views7095
    Read More
  14. 파워빌더 odbc 연결중 오류

    Date2015.05.01 By소솜 Views15512
    Read More
  15. Manager 접속시 JDBC 드라이버 업데이트 문제

    Date2015.04.30 Bytoy2508 Views4683
    Read More
  16. pdb, 9.3 확장자 문의

    Date2015.04.29 By종이 Views5172
    Read More
  17. 매니져로 접속이 안됩니다

    Date2015.04.28 By사이다 Views3899
    Read More
  18. http://maven.cubrid.org/ repository 접속이 안 됨

    Date2015.04.22 By일퍼센트 Views5143
    Read More
  19. 실행이 안됩니다

    Date2015.04.21 By사이다 Views6815
    Read More
  20. 다국어 환경 구축 방법좀 알려주세요.

    Date2015.04.17 By초보개발자임 Views9
    Read More
  21. Invalid buffer position!

    Date2015.04.15 By카이로스 Views13
    Read More
  22. 큐브리드 매니저 실행 시 무반응

    Date2015.04.15 By코버스 Views10125
    Read More
Board Pagination Prev 1 ... 91 92 93 94 95 96 97 98 99 100 ... 200 Next
/ 200

Contact Cubrid

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