Pir*_*App 15 postgresql performance database-design datatypes
Lau*_*lbe 25
如果要节省空间,可以使用"char"
数据类型。它存储单个字节。
你可以投射integer
或text
到"char"
:
SELECT 'u'::"char", 'd'::"char", 'n'::"char";
char | char | char
------+------+------
u | d | n
(1 row)
Run Code Online (Sandbox Code Playgroud)
枚举使用 4 个字节,因为它在内部存储为real
.
为了节省空间,您必须考虑对齐。这些值始终根据类型对齐进行对齐。例如,abigint
总是必须从一个可以被 8 整除的地址开始。
现在,如果您的表被定义为
CREATE TABLE (
smallflag "char",
largenum bigint
);
Run Code Online (Sandbox Code Playgroud)
列之间将有 7 个填充字节,这将呈现"char"
模拟中的所有空间收益。
因此,请小心放置表格列。
小智 15
有点麻烦,但是如果您使列可以为空,您仍然可以使用 bool,将空值作为第三个值。
不过,布尔值在 Postgres 中仍然使用 1 个字节。
归档时间: |
|
查看次数: |
3754 次 |
最近记录: |