PostgreSQL
 sql >> база данни >  >> RDS >> PostgreSQL

Размер на индекса на PostgreSQL и число на стойността

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 - може би има някаква формула. Не знам.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Инсталиране на Orafce.sql 3.0 в Windows 7

  2. PLpgSQL функция за намиране на колони само с NULL стойности в дадена таблица

  3. postgreSQL - in vs any

  4. java.io.IOException:Незаконна UTF-8 последователност:началният байт е 11111xxx:252 - Eclipse и PostgreSQL

  5. Низ за свързване на PostgreSQL с ODBC драйвер в C#, Ключовата дума не се поддържа:драйвер