Postgres:数据类型 - 如何在 postresql 中存储 uint64

sam*_*mol 6 postgresql

postgresql 中的 Bigint 是 8 字节整数。它的范围是 uint64 的一半(因为一位用于对整数进行签名)

我需要在列上进行大量聚合,我的印象是与整数类型相比,NUMERIC 类型的聚合速度较慢。

在这种情况下,我应该如何优化我的存储?

Cra*_*ger 5

除非您有具体原因,否则只需使用NUMERIC. 它慢,慢很多,但这可能没有你想象的那么重要。

您真的没有任何选择,因为 PostgreSQL 不支持 SQL 级别的无符号 64 位整数。您可以添加一个新数据类型作为扩展模块,但这需要大量工作。

您可以将无符号 64 位 int 按位推入 64 位有符号 int,因此 maxuint64/2 以上的值是负数。但这将完全破坏聚合,并且通常会非常丑陋。