2016-09-29 12 views
1

데이터를 쿼리 (선택)하는 데 문제가 있습니다.Oracle 11g : 동일한 테이블의 다른 쿼리 성능에 대해 일부 데이터에서 인덱스가 손상된 것처럼 보입니다.

미수금 테이블에는 account_id가 색인되어 있습니다. 아래 스크립트를 실행하면 Account_ID = 2003975183이됩니다. Account_ID = 900025281 프로세스가 느립니다. 오라클 서버가 예기치 않게 중지 된 후에 발생합니다. 두 계정의 행 수가 거의 같습니다.

계정에 대한 SQL 스크립트 : 그것은 그 색인 것 같아 추적 데이터를 따르면

SELECT nvl(sum(invoice_amt),0) inv_amt 
FROM ardb.receivables 
WHERE 
    acct_id = 2003975183 
    AND entry_date >= trunc(SYSDATE) 
    AND entry_date < trunc(SYSDATE) + 1; 

그것이 제대로 작동하지 않는 이유는 무엇입니까?

느린 쿼리가 부착 빠른 ANS 모두 추적 :

FAST_QUERY_RESULT_TRACE

SLOWLY_QUERY_TRACE_RESULT

친절하게 확인하고 문제를 해결하는 데 도움이됩니다. 감사합니다.

+0

가 왜'테이블 채권의 stats'를 수집 한 후 실행되지 않습니다 귀하의 질의를 다시 한번보십시오. – XING

+0

나는 1) 테이블 데이터를 분할하고 2) 이미 통계를 수집했음을 알리는 것을 잊었다. 효과가 없습니다. 그런데 통계를 수집하기 전에 통계 및 파티션의 행이 동일합니다. – Ikrom

답변

-1

나는이 문제를 해결했다. 실행 벌금과 추적에 내가 볼 수있는 인덱스 스캔 작업이 스크립트 및 증가 공유 풀 사이즈 쿼리를 한 후 (이 아니었다 전) :

ANALYZE INDEX IDX_RECEIVABLES_ACCTID VALIDATE STRUCTURE online; 
+0

dbms_stats 패키지를 사용하여 테이블/인덱스 통계를 수집합니다. – BobC

+0

BobC, 무슨 뜻인가요? – Ikrom

+0

Opps. 즉, ANALYZE 대신 통계를 수집하기 위해 DBMS_STATS 패키지를 사용해야합니다. – BobC