2017-01-24 8 views
0

私は特定のスキーマ(または所有者)内のテーブルのすべてのカウントを取得しようとしています。私は現在、下部にあるコードを使用していますが、動作しますが、実際には遅いです。私はシステムテーブルdba_tablesall_tablesを知っていますが、過去1.5年以内に更新された統計情報はありません。Oracleで統計情報を更新せずにテーブル数を取得する方法はありますか?

他の方法がありますか?私はすべてのシステムテーブルを見てみましたが、統計情報を更新していないようです。

select 
    table_name, 
    owner as schemaname, 
    to_number(extractvalue(xmltype(dbms_xmlgen.getxml('select count(*) c from '||owner||'.'||table_name)),'/ROWSET/ROW/C')) as cnt 
    from all_tables 
    where lower(owner) = 'ownername' 

答えて

1

各テーブルの行を数えなければなりません。統計は行数の正確な尺度として使用すべきではありません。しかし、その期間にデータが追加されていないデータベースを持っていない限り、1.5年間あなたの統計をリフレッシュしていないということは非常に重要です。 )あなたが次の投稿がパフォーマンス問題のものになると思われます。)

+0

パフォーマンス上の問題は既に発生していますが、私は投稿に入れました。私は統計で何もしていない – simplycoding

関連する問題