2016-09-29 3 views
1

データのクエリ(選択)に問題があります。Oracle 11g:同じテーブルの異なるクエリパフォーマンスで、一部のデータでインデックスが破損したようです

未収入金テーブルには、account_idがインデックスされています。 次のスクリプトを実行すると、Account_ID = 2003975183は正常ですが、Account_ID = 900025281の場合、プロセスはゆっくりです.Oracleサーバーが予期せず停止した後に発生します。 両方のアカウントの行数はほぼ同じです。

アカウント用の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

:このスクリプトの実行後、細かいトレースで働く共有プールのサイズの問い合わせを増やす(それがなかったの前に)私は、インデックス・スキャンを見ることができます もう一度あなたのクエリを参照してください。 – XING

+0

私は覚えていません:1)テーブルのデータを分割し、2)統計情報を収集しました。無効。ちなみに、統計情報収集の前に統計情報とパーティションの行数は同じでした。 – Ikrom

答えて

-1

私はこの問題を解決しました。あなたは `テーブル債権のstats`を収集してから実行していないのはなぜ

ANALYZE INDEX IDX_RECEIVABLES_ACCTID VALIDATE STRUCTURE online; 
+0

dbms_statsパッケージを使用して、表/索引の統計情報を収集します。 – BobC

+0

BobC、どういう意味ですか? – Ikrom

+0

Opps。つまり、ANALYZEではなく、統計を収集するためにDBMS_STATSパッケージを使用する必要があります。統計収集用のANALYZEコマンドは推奨されていません – BobC

関連する問題