Cài đặt cho mục tiêu thống kê được lưu trữ trên mỗi cột trong bảng danh mục pg_attribute
. Bạn có thể đặt nó như thế này:
ALTER TABLE myschama.mytable ALTER mycolumn SET STATISTICS 127;
Và kiểm tra nó như thế này:
SELECT attstattarget
FROM pg_attribute
WHERE attrelid = 'myschama.mytable'::regclass
AND attname = 'mycolumn';
Hoặc bạn chỉ cần xem tập lệnh tạo trong trình duyệt đối tượng của pgAdmin, nơi nó được thêm vào nếu giá trị khác với giá trị mặc định trong default_statistics_target
.
Tôi trích dẫn sách hướng dẫn về attstattarget
:
attstattarget kiểm soát mức độ chi tiết của thống kê được tích lũy cho cột này theo
ANALYZE
. Giá trị 0 chỉ ra rằng không có thống kê nào nên được thu thập. Giá trị âm cho biết sử dụng mục tiêu thống kê mặc định của hệ thống. Ý nghĩa chính xác của các giá trị dương là phụ thuộc vào kiểu dữ liệu. Đối với các kiểu dữ liệu vô hướng, mục tiêu attstattarget vừa là số mục tiêu của "các giá trị phổ biến nhất" cần thu thập và số lượng mục tiêu của các thùng biểu đồ cần tạo.
In đậm nhấn mạnh của tôi.
Thống kê cho các cột chỉ mục thuần túy giống với thống kê cột và không có mục nhập riêng biệt trong bảng thống kê. Nhưng Postgres thu thập các thống kê riêng biệt cho các biểu thức chỉ mục . Chúng có thể được tinh chỉnh theo cách tương tự:
ALTER INDEX myschema.myidx ALTER COLUMN 1 SET STATISTICS 128;
Trong trường hợp không có tên cột thực, số thứ tự được sử dụng để giải quyết các cột chỉ mục, tương ứng với pg_attribute.attnum
:
SELECT attstattarget
FROM pg_attribute
WHERE attrelid = 'myschama.myidx'::regclass
AND attnum = 1;
Cài đặt chỉ thực sự ảnh hưởng đến thống kê cột trong lần tiếp theo ANALYZE
đang được chạy thủ công hoặc bằng autovacuum
.