FORUM

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

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

     

    감사합니다.


List of Articles
번호 제목 글쓴이 날짜 조회 수
공지 CUBRID 사용자를 위한 DBeaver 도구 출시 안내 11 admin 2024.04.23 45681
» IN 쿼리 사용시 질의실행계획 비용 관련 8 종이 2015.04.07 7214
2072 엑셀파일로 데이터 입력 시 오류 1 secret 로우121 2015.04.04 7
2071 네트워크 드라이브에 데이터베이스 생성하기 1 꺆끾뗚 2015.04.03 6071
2070 JDBC(MySQL) 에서 JDBC로 마이그레이션 3 file 날아라수호야 2015.04.02 6702
2069 0으로 나눌수가 없는 경우.. 처리를 위해서 디코더나 case를 사용해서 써봤는데 1 거만고양이 2015.04.01 4880
2068 자동백업시 폴더까지는 생성이 되는데 백업파일이 생성이 않됩니다. 1 secret 블랙 2015.03.30 8
2067 오라클의 LAG (위 Row 값), LEAD (아래 Row 값) 가져올수 있는 쿼리 대체할만한것이 있나요? 2 거만고양이 2015.03.29 12876
2066 CUBRID와 관련된 프로세스 관련 문의드립니다. 1 secret 질의응답요청 2015.03.28 10
2065 자동백업 문의 1 file 완초 2015.03.27 4648
2064 9.3 버전 원격 DB 접근 방법 문의 1 secret 수진이2 2015.03.27 277
2063 DB와 BROKER 분리 설정 방법 1 땡글이와밍크 2015.03.26 6681
2062 외부 개체에 트랩 가능한 오류(C0000005)가 발생했습니다. 스크립트를 계속 실행할 수 없습니다. 1 JKwang2 2015.03.12 12225
2061 ODBC로 연결을 했는데 자꾸 E_FAIL이 뜹니다.제발 답변좀 달아주세요!!개인이라고 신경 안써주시나? 1 JKwang2 2015.03.12 9728
2060 Invalid buffer position 오류 발생 1 CUCUCUCU 2015.03.11 7150
2059 Cubrid shard 설정 2 Vtol 2015.03.10 6410
2058 CUBRIDProvider 오류 '80040e00' Accessor is invalid. 1 JKwang2 2015.03.10 7329
2057 질문이 있어 문의드립니다. 1 키위 2015.03.02 5624
2056 큐브리드 마이그레이션 프로그램 에러 로그 문의 1 종이 2015.03.02 5962
2055 큐브리드 이중화 관련 질문 3 secret 차차오 2015.03.02 10
2054 하이버네이트 페이징 처리 관련 재문의 1 질주하는구 2015.02.27 5174
Board Pagination Prev 1 ... 102 103 104 105 106 107 108 109 110 111 ... 210 Next
/ 210

Contact Cubrid

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

Sketchbook5, 스케치북5

Sketchbook5, 스케치북5

나눔글꼴 설치 안내


이 PC에는 나눔글꼴이 설치되어 있지 않습니다.

이 사이트를 나눔글꼴로 보기 위해서는
나눔글꼴을 설치해야 합니다.

나눔고딕 사이트로 가기

Sketchbook5, 스케치북5

Sketchbook5, 스케치북5