Background Image

FORUM

2009.01.23 04:15

쿼리플랜 문의

조회 수 16982 추천 수 0 댓글 3
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄
다음과 같은 테이블을 생성하고 쿼리를 수행 해보았습니다.

create table tb ( bdate date, val varchar(100) );
create index ix_tb on tb ( bdate );
-- 각 날짜에 대해 약 십만개의 로우 입력 = 365 * 100,000 = 약 36,500,000 로우

-- 1) 날짜 조건을 범위로 주었을 때
select bdate from tb where bdate >= to_date('20090101', 'yyyymmdd') and bdate <= to_date('20090110', 'yyyymmdd');

-- 2) 날짜 조건을 equal로 주었을 때
select bdate from tb where bdate = to_date('20090101', 'yyyymmdd')
   or basic_date = to_date('20090102', 'yyyymmdd')
   or basic_date = to_date('20090103', 'yyyymmdd')
   or basic_date = to_date('20090104', 'yyyymmdd')
   or basic_date = to_date('20090105', 'yyyymmdd')
   or basic_date = to_date('20090106', 'yyyymmdd')
   or basic_date = to_date('20090107', 'yyyymmdd')
   or basic_date = to_date('20090108', 'yyyymmdd')
   or basic_date = to_date('20090109', 'yyyymmdd')
   or basic_date = to_date('20090110', 'yyyymmdd');

위의 조건에서 각 쿼리에 대한 수행속도 차이가 많이 나서 쿼리플랜을 확인 해봤습니다.

1) 의 쿼리플랜은
    subplan: iscan
                 class: tb node[0]
                 index: ix_tb term[0]
                 cost:  fixed 257(0.0/257.0) var 88873(380.7/88492.0) card 126911

2) 의 쿼리플랜은
    subplan: iscan
                 class: tb node[0]
                 index: ix_tb term[0]
                 cost:  fixed 81(0.0/81.0) var 13828(117.5/13710.0) card 1

와 같이 코스트 차이가 많이 나는데요, 왜 이런 수행속도의 차이가 발생하는지 알고싶네요.
그리고 같은 데이터에 대해 같은 인덱스 스캔을 수행하는데 보는 것과 같이 로우 수와 카디널리티의 차이가 많이 나는데요, 이런 결과가 발생하는 이유도 궁금합니다.


  • ?
    cubebridge 2009.01.24 02:12
    예제로 올려주신 쿼리는 동일한 범위를 검색하는 쿼리로 예제를 올려주신 것 같습니다. 두번째 쿼리에서 bdate와 basic_date가 나오는데 실제 사용하신 쿼리도 동일한 것인지요? 위와 같은 경우 bdate와 basic_date의 값이 동일 한 것이 아니라면 같은 결과 값이 나오지 않을 것 같습니다. 가능하시면 스키마 정보를 같이 올려 주시고 쿼리를 확인해 주시길 부탁드립니다.
    새해 복 많이 받으세요^^~
  • ?
    asteroid 2009.01.24 02:35
    두번째 쿼리의 basic_date는 bdate 의 오타입니다. 문제를 단순화하는 과정에서 오류가 있었네요.

    수정된 두번째 쿼리는 다음과 같습니다.
    select bdate from tb where bdate = to_date('20090101', 'yyyymmdd')
       or bdate = to_date('20090102', 'yyyymmdd')
       or bdate = to_date('20090103', 'yyyymmdd')
       or bdate = to_date('20090104', 'yyyymmdd')
       or bdate = to_date('20090105', 'yyyymmdd')
       or bdate = to_date('20090106', 'yyyymmdd')
       or bdate = to_date('20090107', 'yyyymmdd')
       or bdate = to_date('20090108', 'yyyymmdd')
       or bdate = to_date('20090109', 'yyyymmdd')
       or bdate = to_date('20090110', 'yyyymmdd');
  • ?
    cubebridge 2009.02.05 20:58

    추가 답변이 늦어서 죄송합니다.
    우선 쿼리플랜의 결과에 대해서 간략하게 설명해 드리도록 하겠습니다.
    비용에 대해 보여지는 내용은 아래와 같이 구성되어 있습니다.
    cost: fixed i(CPU/IO) var j (CPU/IO) card k
    cost는 총 소요된 비용입니다.
    fixed는 해당 테이블 또는 인덱스를 스캔하는데 고정적으로 발생한 비용입니다.
    var은 검색 조건에 따라 달라지는 변동적인 비용입니다.
    card는 검색 결과에 따라 return되는row 수일 수도 있고, 전체 테이블의 row수일 수도 있습니다.
    cost란, 절대적인 수치가 아니라 페이지 하나를 디스크에서 읽어오는데 드는 비용을 1이라고 정하고, 그에 따른 상대적인 값을 보여주는 데이터입니다.

    현재 올려주신 내용이 전체 쿼리의 일부분에 대한 내용이라면 전체쿼리 플랜이 내용을 파악하기 위해 필요할 것으로 생각됩니다.
    검색할 데이터와 검색 방법에 따라 쿼리플랜이나 비용은 다를 수 있습니다.
    추가 의문사항이 있으시면 알려주시고 전체적인 쿼리 유형을 보여주실 수 있으시면 내용파악에 더 도움이 될 것 같습니다.
    좋은 하루 되세요


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

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

    Date2020.04.09 Byadmin Views4458
    read more
  3. LOWER 오류가 왜 날까요?

    Date2010.01.15 By초보 Views10392
    Read More
  4. 큐브리드 멈춤상태 broker status결과 첨부합니다.

    Date2011.01.10 By니나노 Views10393
    Read More
  5. 윈도우 DBA 비번 암호변경

    Date2016.06.15 By천상 Views10397
    Read More
  6. ubuntu에서 cubrid 매뉴얼을 보고 설치 할 때 오류 발생

    Date2014.02.25 By달려라데니얼 Views10401
    Read More
  7. VB 6.0 환경에서 레코드 컨트롤 시에 런타임 오류가 발생합니다.

    Date2014.03.20 Byred03410 Views10403
    Read More
  8. 원격에서 접속은 되지만 테이블 목록을 볼 수 없습니다.

    Date2010.08.28 By1311 Views10406
    Read More
  9. 브로커 포트 관련

    Date2013.10.28 By푸추어핸접 Views10409
    Read More
  10. 큐브리드에 db link 기능이 있나요?

    Date2013.07.18 By김성일컴퍼니 Views10413
    Read More
  11. linux cubrid manager 설치후 실행 error

    Date2013.10.23 By거기 Views10416
    Read More
  12. 질의 자동화 질문입니다.

    Date2012.04.27 By기린종인 Views10417
    Read More
  13. 큐브리드 매니저 실행 후 DB접속 시

    Date2016.04.15 By안녕하세요1 Views10417
    Read More
  14. loaddb 로 대량의 data insert 시 질문드립니다.

    Date2012.11.16 Bylaim Views10420
    Read More
  15. Java 저장 함수/프로시저 문의

    Date2014.01.03 By초도한정 Views10431
    Read More
  16. cubrid_connect() 가 정의 되어 있지 않다고 나옵니다.

    Date2011.08.03 By독고구검 Views10435
    Read More
  17. 에러 문의

    Date2016.04.19 By시나브로 Views10438
    Read More
  18. CUBRID-8.2.1.0215 CentOs5.1에 설치 중입니다.

    Date2010.01.27 ByPhilip Park Views10439
    Read More
  19. group by 오류

    Date2010.03.31 By초보 Views10444
    Read More
  20. spec 나 srpm 은 어디에서 받을 수 있나요?

    Date2009.06.21 By아주가끔은 Views10447
    Read More
  21. 큐브리드 매니저에서 쿼리 포맷팅 기능이 있나요?

    Date2009.11.13 By풀리야 Views10448
    Read More
  22. 큐브리드->큐브리드 데이터 이관시 어떤 방식이 가장 좋을까요

    Date2010.07.08 By호짱 Views10463
    Read More
Board Pagination Prev 1 ... 142 143 144 145 146 147 148 149 150 151 ... 200 Next
/ 200

Contact Cubrid

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