PostgreSQL类型bytea
和bit varying
声音类似:
bytea
存储二进制字符串.
bit varying
存储1和0的字符串.
文档没有提到任何一个的最大大小.难道是1GB喜欢character varying
?
我有两个单独的用例,都在一个包含数百万行的表中:
存储MD5哈希值
这将是一个bytea
长度为16个字节或a bit(128)
.它将用于:
重复数据删除:大量使用GROUP BY
,我想有一个索引.
WHERE md5 =
仅查询完全匹配.
显示为人类使用的十六进制字符串.
存储任意二进制数据
长度不超过4kB的二进制数据字符串:
按位运算以查找与某个掩码匹配的字符串.这篇文章末尾的例子.
提取一些字节,例如获取字符串中字节14的整数值.
一些重复数据删除.
使用按位操作的工作示例bit varying
.掩码是X'00FF00',它只返回行X'AAAAAA'.我缩短了示例的字符串,但它将超过它们的全长,高达4kB.是否可以做类似的事情bytea
?
CREATE TABLE test1 (mystring bit varying); INSERT INTO test1 VALUES (X'AAAAAA'), (X'ABCABC'); SELECT * FROM test1 WHERE mystring & X'00FF00' = X'00AA00';
其中的bytea
和bit varying
是比较合适的?
我看到这个UUID
类型正好存储了16个字节,那么存储MD5会有什么好处吗?