Setting untuk target statistik disimpan per kolom di tabel katalog pg_attribute
. Anda dapat mengaturnya seperti ini:
ALTER TABLE myschama.mytable ALTER mycolumn SET STATISTICS 127;
Dan periksa seperti ini:
SELECT attstattarget
FROM pg_attribute
WHERE attrelid = 'myschama.mytable'::regclass
AND attname = 'mycolumn';
Atau lihat saja skrip pembuatan di browser objek pgAdmin, yang ditambahkan jika nilainya berbeda dari default di default_statistics_target
.
Saya mengutip manual di attstattarget
:
attstattarget mengontrol tingkat detail statistik yang dikumpulkan untuk kolom ini dengan
ANALYZE
. Nilai nol menunjukkan bahwa tidak ada statistik yang harus dikumpulkan. Nilai negatif mengatakan untuk menggunakan target statistik default sistem. Arti yang tepat dari nilai-nilai positif bergantung pada tipe data. Untuk tipe data skalar, attstattarget adalah jumlah target dari "nilai paling umum" yang akan dikumpulkan, dan jumlah target bin histogram yang akan dibuat.
Tebal tekankan milikku.
Statistik untuk kolom indeks biasa identik dengan statistik kolom dan tidak memiliki entri terpisah dalam tabel statistik. Tetapi Postgres mengumpulkan statistik terpisah untuk ekspresi indeks . Itu dapat diubah dengan cara yang sama:
ALTER INDEX myschema.myidx ALTER COLUMN 1 SET STATISTICS 128;
Dengan tidak adanya nama kolom yang sebenarnya, nomor urut digunakan untuk menangani kolom indeks, yang sesuai dengan pg_attribute.attnum
:
SELECT attstattarget
FROM pg_attribute
WHERE attrelid = 'myschama.myidx'::regclass
AND attnum = 1;
Pengaturan hanya benar-benar mempengaruhi statistik kolom pada waktu berikutnya ANALYZE
sedang dijalankan secara manual atau dengan autovacuum
.