也许有一些函数可以检查索引和表的fillfactor?我已经尝试过\d+,但仅具有基本定义,没有fillfactor值:

        Index "public.tab1_pkey"
 Column |  Type  | Definition | Storage
--------+--------+------------+---------
 id     | bigint | id         | plain
primary key, btree, for table "public.tab1"

因为桌子什么都没找到。如果表是使用非默认的fillfactor创建的:
CREATE TABLE distributors (
    did     integer,
    name    varchar(40),
    UNIQUE(name) WITH (fillfactor=70)
)
WITH (fillfactor=70);

然后\d+ distributors显示非标准填充因子。
                            Table "public.distributors"
 Column |         Type          | Modifiers | Storage  | Stats target | Description
--------+-----------------------+-----------+----------+--------------+-------------
 did    | integer               |           | plain    |              |
 name   | character varying(40) |           | extended |              |
Indexes:
    "distributors_name_key" UNIQUE CONSTRAINT, btree (name) WITH (fillfactor=70)
Has OIDs: no
Options: fillfactor=70

但是也许有一种方法可以在不解析输出的情况下获得这个值?

最佳答案

您需要查询pg_class系统表:

select t.relname as table_name,
       t.reloptions
from pg_class t
  join pg_namespace n on n.oid = t.relnamespace
where t.relname in ('tab11_pkey', 'tab1')
  and n.nspname = 'public'

reloptions是一个数组,每个元素都包含一个option=value定义。但对于具有默认选项的关系,它将为空。

08-07 09:46