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 = '<確認したいテーブル名>';