如何在PostgreSQL中获取特定表的每行大小?

Dee*_*oel 5 postgresql

是否可以在postgres中获取特定表的每行大小?

例如,一个表有50行,表的总大小为10gb,但我想知道每行的大小,而不是完整的表的大小。

小智 10

没有计算行大小的函数,只有计算列值大小的函数。所以你可以这样做:

select pg_column_size(column_1) + 
       pg_column_size(column_2) + 
       pg_column_size(column_3) as row_size
from the_table;
Run Code Online (Sandbox Code Playgroud)

如果您需要的话,可以使用动态 SQL 和 PL/pgSQL 函数来自动执行此操作。


小智 9

计算postgress表行大小的函数是这样的

SELECT sum(pg_column_size(t.*)) as filesize, count(*) as filerow FROM TABLE_NAME as t;
Run Code Online (Sandbox Code Playgroud)

TABLE_NAME用您的表名替换;增加条件t.COLUMN_NAME = 'YOUR_VALUE'

  • 如果它可以帮助某人快速查找,则此处返回的值是以字节为单位的大小。 (5认同)
  • 好一个。请注意,“pg_column_size(t.*)”可以简化为“pg_column_size(t)”。该值将包括行标题“开销”,因此要获得实际数据大小,您需要减去 24:`pg_column_size(t) - 24` (2认同)