17

私は検索しましたが、これに対する単純で直接的な答えを見つけることができませんでした。によって使用されている現在の統計ターゲットを確認するにはどうすればよいANALYZEですか?

4

2 に答える 2

26

統計ターゲットの設定は、列ごとにカタログテーブルに保存されますpg_attribute。次のように設定できます。

ALTER TABLE myschama.mytable ALTER mycolumn SET STATISTICS 127;

そして、次のように確認してください。

SELECT attstattarget
FROM   pg_attribute
WHERE  attrelid = 'myschama.mytable'::regclass
AND    attname = 'mycolumn';

または、pgAdminのオブジェクトブラウザで作成スクリプトを確認します。値がのデフォルトと異なる場合は、スクリプトが追加されますdefault_statistics_target

私はマニュアルを引用しますattstattarget

attstattargetは、この列に対して累積された統計の詳細レベルを。によって制御しますANALYZE。ゼロ値は、統計を収集する必要がないことを示します。負の値は、システムのデフォルトの統計ターゲットを使用することを示します。正の値の正確な意味は、データ型によって異なります。スカラーデータ型の場合、attstattargetは、収集する「最も一般的な値」のターゲット数と、作成するヒストグラムビンのターゲット数の両方です。

大胆な強調鉱山。

プレーンインデックス列の統計は列統計と同じであり、統計テーブルに個別のエントリはありません。ただし、Postgresはインデックスに対して個別の統計を収集します。それらは同様の方法で微調整することができます:

ALTER INDEX myschema.myidx ALTER COLUMN 1 SET STATISTICS 128;

実際の列名がない場合は、以下に対応するインデックス列をアドレス指定するために序数が使用されますpg_attribute.attnum

SELECT attstattarget
FROM   pg_attribute
WHERE  attrelid = 'myschama.myidx'::regclass
AND    attnum = 1;

ANALYZEこの設定は、次に手動またはによって実行されるときに列統計にのみ実際に影響しますautovacuum

于 2013-02-22T23:22:20.273 に答える
2

これにより、収集されている現在の統計をより明確に表示できます

SELECT attrelid::regclass, attname, attstattarget FROM pg_attribute WHERE attstattarget >= 0 order by attstattarget desc;
于 2017-03-10T11:14:09.323 に答える