[Query] INDEX_FSS 를 이용한 COUNT(*) 쿼리 0 2 8,067

by 이강훈 COUNT HINT INDEX_FSS [2010.12.13 20:43:49]


사용자 지정 2.jpg (131,494Bytes)

HIMTFMFCOUNT(*) 쿼리시 속도문제로 질문드립니다..

(1) SELECT /*+ index_ffs(B, SAMPLE_LEDGER_IDX) */ COUNT( * )
FROM SAMPLE_LEDGER B
    WHERE B.SAMPLE_IN_YMD BETWEEN '20090101' AND '20090630'
   
쿼리(1)는 index_ffs 힌트가 적용되어 조회속도가 빠르게 나옵니다.


  
(2) SELECT /*+ index_ffs(B, SAMPLE_LEDGER_IDX)*/ COUNT( * )
  FROM SAMPLE_LEDGER B
, DNA_ANALYSIS_ANIMAL C
, BUTCHERY_INFO_V D
WHERE B.SAMPLE_NO = C.SAMPLE_NO
   AND B.SAMPLE_GB_CD = '400'
   AND B.SAMPLE_IN_YMD BETWEEN '20090101' AND '20090630'
   AND C.ANIMAL_NO = D.INDIVIDUAL_NO
   AND C.TEST_SEQ = '01'
   AND B.USE_YN = 'Y'
   AND C.USE_YN = 'Y'
 
쿼리(2) 가 제가 구하려는 것인데.. 힌트를 적용해도 속도가 상당히 느리게 나옵니다.

실행계획을 보면 index_ffs 가 적용안되었는데 (1)과 같이 적용되게 할 수 있을런지요??

실행계획을 캡쳐하여 올립니다.  위에것이 (1) 쿼리의 실행계획이고 밑에것이 (2)쿼리의 실행계획입니다.
 

by 혈기린 [2010.12.14 11:32:15]
일단 index fast full scan의 개념을 알고계셔야 하겠네요 왜 밑에 쿼리에 index_ffs힌트를 적용하실려고 하는건가요 단지 위에 쿼리가 저 힌트를 사용하니 빨라져서인가요?
위에 쿼리도 조건절에 있는 SAMPLE_IN_YMD 칼럼이 인덱스 칼럼이고 범위가 좁으면 index range scan이 더효율적일수도 있습니다.

by lkh323 [2010.12.14 17:40:15]
답변 감사드립니다.

페이지 컷팅을 위해 조회조건의 전체 count 를 구해야 합니다
count(*) 로 인하여 전체 쿼리 속도가 너무 느려져서 찾아보니 index_fss를
사용하면 빨라진다하여 적용하였으나 효과를 못보았습니다.
(1)번 쿼리는index_fss 적용된것을 예시로 보여드린것이고
(2)의 실행계획에서 index_fss 가 적용안되어 적용되는 방법인 있는가해서
질문했습니다.
여러 테이블이 조인되서 index_fss 가 적용안되는 것이라 생각되는데 count(*)
하나때문에 전체적인 속도가 넘 느려져서 갑갑하네요..
댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입