Oracle DBにおいてパーティションで分割されたテーブルの統計情報の取得情報を確認する方法を調べてみました。
各パーティションの統計情報取得日時は下記のSQLから取得できます。
-- PARTITION_NAME:パーティション名、LAST_ANALYZED:統計情報を取得した日時(取得していなければNULL) SELECT TABLE_NAME, PARTITION_NAME, LAST_ANALYZED FROM ALL_TAB_PARTITIONS WHERE TABLE_NAME = '<確認したいテーブル名>';
なお、パーティション分割されたテーブルの統計情報収集の方法は2つあり、上記はパーティションレベルで統計情報を収集した際の確認方法になります。
(もう1つは、表レベルで統計情報を収集する方法があります。)
これらの違いは”GLOBAL_STATS”カラムの値で確認することができます。
-- GLOBAL_STATSが"YES"ならパーティション単位で統計情報が収集されている SELECT TABLE_NAME, PARTITION_NAME, GLOBAL_STATS FROM ALL_TAB_PARTITIONS WHERE TABLE_NAME = '<確認したいテーブル名>'; -- GLOBAL_STATSがYESなら表レベルで統計情報が収集されている。 SELECT TABLE_NAME, GLOBAL_STATS FROM ALL_TABLES WHERE TABLE_NAME = '<確認したいテーブル名>';