PostgreSQL
 sql >> Teknologi Basis Data >  >> RDS >> PostgreSQL

Ukuran indeks PostgreSQL dan nomor nilai

pg_table_size('index_name') untuk indeks individual - tetapi itu hanya akan menunjukkan kepada Anda ukuran pada disk, bukan jumlah data

count(*) untuk mendapatkan jumlah baris saat ini yang tepat

sum(pg_column_size(column_name)) from table_name untuk estimasi jumlah data kolom

Anda dapat mencoba sendiri seperti:

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)

dan untuk memeriksa bagaimana psql mendapatkan ukuran indeks individual, jalankan dengan psql -E ..

dan sekali lagi - fungsi di atas bekerja dengan ukuran disk yang dibutuhkan - mungkin/(mungkin tidak) sangat berbeda dari jumlah data yang sebenarnya. menyedot debu membantu di sini

perbarui Saya tidak tahu di mana Anda langsung mendapatkan jumlah "baris" dalam indeks, sehingga hanya dapat menawarkan cara tidak langsung. Misalnya biarkan saya memiliki indeks parsial, jadi "jumlah baris" berbeda dari tabel. Saya dapat memeriksa estimasi dengan EXPLAIN (tentu saja Anda harus mengulangi klausa where untuk itu) dengan memeriksa rows=66800 di Index Only Scan using memberi saya gambaran tentang jumlah baris dalam indeks itu (sebenarnya rows=64910 yang bisa Anda dapatkan dengan explain analyze atau cukup jalankan count(*) ). Saya tidak dapat menemukan info yang relevan di pg_stats - mungkin ada beberapa rumus. Saya tidak tahu.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Oracle DBMS_LOB.WRITEAPPEND ke Konversi Postgres

  2. TimescaleDB:pilih baris terakhir secara efisien

  3. Bagaimana Anda mendefinisikan fungsi postgres di Rails dan apa ruang lingkup dan masa pakainya?

  4. Menampilkan Data PostGIS dengan Leafletjs

  5. Perlu optimasi SQL (mungkin DISTINCT ON adalah alasannya?)