小编mj_*_*mj_的帖子

Postgres 如何在磁盘上存储许多 varchars?

我有一张有 2 亿行的 80 场演出的桌子。我正在尝试加快速度,我注意到它有大量的 varchar 列。在模式中,它们的长度范围从 15 个字符到 250 个字符,大多数设置为 50。所有 varchars 的总长度为 850 个字节。在实际使用中,很多字段为空或者字符串很短。

我知道 Postgres 使用 8k 页面大小。现在,如果我必须进行全表扫描并假设最坏的情况,每页 8k / 850 = 9.6 条记录。浏览我的完整表格将(并且确实)需要很长时间。然而实际上,由于这些字段中的大多数都是空的,那么磁盘上将为这些 varchar 分配多少空间?每页是否会有更多记录,或者 Postgres 是否会添加一些填充以方便以后更新?

我问的原因是因为我正在探索通过将尽可能多的不常访问的 varchars 列从该表中踢出并进入我们将通过联接访问的另一个列来提高性能的想法。

感谢您对我的逻辑的任何确认或否认。

postgresql

1
推荐指数
1
解决办法
108
查看次数

标签 统计

postgresql ×1