在PostgreSQL中,将字节数据编码并存储为TEXT与存储为BYTEA有什么区别?

8

我有一些字节数据(数百万行),目前,我先将其转换为base64格式,然后将其存储为TEXT。数据在包含base64数据的行上进行索引。我认为Postgres会自己进行base64转换。
如果我使用BYTEA数据类型存储,速度会更快吗?两种数据类型对索引查询会产生什么影响?

1个回答

22

使用Base64将字节转换为文本会比字节多消耗33%的空间。即使这样更快,你在磁盘上使用的空间也会更多。加载和存储数据也应该会变慢。我认为这样做没有任何优势。

Postgres支持在BYTEA列上创建索引。由于字节比文本短,具有索引的字节列应该比具有索引的文本列更快。


bytea比text慢,http://engineering.pivotal.io/post/bytea_versus_text_in_postgresql/ - AuthorProxy
1
@ciemens,有关base64编码使用了多少倍空间的信息不正确。实际上是1.33%:https://dev59.com/S2Yr5IYBdhLWcg3wy9SA#13378842 - Ahmad Ferdous
@nick-t,你为什么把@clemens的回答中的1.33%改成了33%? - uberrebu
2
@uberrebu "1.33 more space" 对我来说意味着总空间的2.33倍。也可以这样表达:“原始空间的1.33倍”。 - Nick T
请阅读@AhmadFerdous上面的评论和@clemens的评论。 - uberrebu
显示剩余2条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接