答案 0 :(得分:0)
因为Postgres不能像对数据结构进行编程那样工作。它不是将它们保留在内存中,而是保留在磁盘上。因此,每个数据结构都有一个固定长度的数组值。参见以获取更多信息:https://stackoverflow.com/a/42484838/13638824
编辑您的问题(评论太久了):
将数据结构写入内存和磁盘完全不同。内存是动态的,对其进行写入非常便宜,因此它可以非常快速地处理数据更改。但是写入磁盘并不便宜,当数据库系统决定写入数据时,他们正在努力提高效率。他们通常在后台使用固定大小的分配来提高性能。定义Text
时,dbms不会创建string
。它将以可扩展数据结构的形式写入磁盘,以确保灵活性和性能。但是,如果您使用char[]
,则长度将是预定义的,因此性能会更高。
TL; DR;
对于内存数据结构:
char[] == string
。
但是对于DBMS char[] == fixed size byte array
和text == flexible size byte array
。