【问题标题】:How to get each row size of a particular table in postgresql..?如何在 postgresql 中获取特定表的每一行大小..?
【发布时间】:2016-03-17 08:01:27
【问题描述】:

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

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

【问题讨论】:

    标签: postgresql


    【解决方案1】:

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

    SELECT sum(pg_column_size(t.*)) as filesize, count(*) as filerow FROM TABLE_NAME as t;
    

    将TABLE_NAME 替换为您的表名; 添加条件t.COLUMN_NAME = 'YOUR_VALUE'

    【讨论】:

    • 不错的一个。请注意,pg_column_size(t.*) 可以简化为 pg_column_size(t)。该值将包括行标题“开销”,因此要获得实际数据大小,您需要减去 24:pg_column_size(t) - 24
    【解决方案2】:

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

    select pg_column_size(column_1) + 
           pg_column_size(column_2) + 
           pg_column_size(column_3) as row_size
    from the_table;
    

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

    【讨论】:

    • 谢谢,但我怎样才能对表中的所有行运行此查询。您能帮我提供动态查询吗?
    • @DeepeshGoel:它将针对表中的所有 行 运行,因为它没有 where 子句
    • @a_horse_with_no_name 你能分享一下输出的单位是什么吗?是字节吗?
    • @aquaman Quote from the manual "显示用于存储任何单个数据值的字节数"
    猜你喜欢
    • 2021-03-31
    • 1970-01-01
    • 2023-03-09
    • 2020-10-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-02-04
    • 2016-10-25
    相关资源
    最近更新 更多