例: キー分散統計

キー分散統計を使用して、役立つ可能性がある表のその他の情報の見積を提供することもできます。

例7-4キー分散統計

各表の要素数を見積もるには、次の問合せを実行します。

SELECT tableName, 
    sum(count) AS count
FROM SYS$TableStatsPartition
WHERE NOT contains (tableName, "$")
GROUP BY tableName

WHERE NOT CONTAINS (tableName, "$")句は、名前に$文字が含まれない表のみを含めることでシステム表をフィルタします。

GROUP BY tableName句を使用すると、その表のすべてのパーティション・エントリに対して合計が計算されます。

例7-5キー分散統計

各表の平均キー・サイズを見積もるには、次の問合せを実行します。

SELECT tableName,
    CASE WHEN sum(count) = 0
        THEN 0
        ELSE sum(avgKeySize*count)/sum(count)
    END AS avgKeySize
FROM SYS$TableStatsPartition
WHERE NOT contains(tableName, "$")
GROUP BY tableName

CASE句では、カウントがゼロであるエントリがスキップされます。それ以外の場合は、それぞれのエントリが要素数によって重み付けされ、結果が合計数で除算されます。

例7-6キー分散統計

各索引の要素数を見積もるには、次の問合せを実行します。

SELECT tableName,
       indexName,
       sum(count) AS count
FROM SYS$TableStatsIndex
WHERE NOT contains(tableName, "$")
GROUP BY tableName, indexName

例7-7表のサイズ

WHERE NOT CONTAINS (tableName, "$")句は、名前に$文字が含まれない表のみを含めることでシステム表をフィルタします。

SELECT tableName,TableSize,
tableSizeWithTombstones FROM SYS$TableStatsPartition 
WHERE NOT contains(tableName,"$");

破棄のない表(非複数リージョン表、システム表など)の場合、メトリックtableSizeWithTombstonesはシステム表のメトリックtableSizeと同じです。2つのメトリックの違いは、表内の破棄の合計ストレージ・サイズです。

例7-8表のエクスポート前のサイズの決定

巨大な表を別の場所(別のディスク、kvstoreなど)にエクスポートする場合、tableSizeを使用してデータのサイズを決定できます。エクスポートでは破棄はコピーされないため、その表の破棄なしのライブ・データのサイズを決定できます。
SELECT tableName,TableSize FROM SYS$TableStatsPartition 
WHERE NOT contains(tableName,"$");