pg_table_size('index_name')
個々のインデックスの場合-ただし、データの量ではなく、ディスク上のサイズのみが表示されます
count(*)
行の正確な現在のマウントを取得するには
sum(pg_column_size(column_name)) from table_name
列データ量の見積もり用
次のように自分で試してみることができます:
t=# \di+ tbl*
List of relations
Schema | Name | Type | Owner | Table | Size | Description
--------+----------------------+-------+----------+----------------+--------+-------------
public | tbl_pkey | index | postgres | tbl | 156 MB |
public | tbl_unpic | index | postgres | tbl | 46 MB |
public | tbl_x1 | index | postgres | tbl | 57 MB |
(3 rows)
t=# \dt+ tbl
List of relations
Schema | Name | Type | Owner | Size | Description
--------+----------------+-------+----------+-------+-------------
public | tbl | table | postgres | 78 MB |
(1 row)
t=# select pg_size_pretty(pg_total_relation_size('tbl'));
pg_size_pretty
----------------
337 MB
(1 row)
t=# select 78+57+46+156;
?column?
----------
337
(1 row)
psqlが個々のインデックスサイズを取得する方法を確認するには、psql -E
を使用して実行します。 ..
繰り返しになりますが、上記の関数はディスクにかかるサイズで機能しますが、実際のデータ量とは極端に異なる場合があります(そうでない場合もあります)。掃除機はここで役立ちます
更新 インデックスの「行」の数をどこで直接取得するかはわかりません。したがって、間接的な方法しか提供できません。たとえば、部分インデックスを作成すると、「行数」はテーブルとは異なります。 EXPLAINを使用して見積もりを確認できます(もちろん、そのためにwhere句を繰り返す必要があります)rows=66800
を確認します Index Only Scan using
そのインデックスの行数についてのアイデアが得られます(実際にはrows=64910
です) これはexplain analyze
で取得できます または、count(*)
を実行するだけです )。 pg_statsに関連情報が見つかりません-おそらくいくつかの式があります。わかりません。