我正在开发一个项目,我必须使用x
类型的bytea
列存储数百万行(最大大小为128字节)。我需要按x
(即where x = ?
)查询数据。现在我想知道我是否可以直接使用x
作为主键而不会对性能产生任何负面影响?
我还必须在另一个表的主键上加入该表,因此我还必须将bytea
作为外键存储在另一个表中。
据我所知,大多数数据库系统都使用B + -Tree,其搜索复杂度为θ(log(n))
。使用bytea
作为主键时,我不确定Postgres是否可以有效地组织这样的B + -Tree?
答案 0 :(得分:1)
如果您可以保证bytea
的值永远不会改变,您可以将其用作主键。
但这样做并不一定明智:如果该密钥也存储在其他表中,这将浪费空间,人工主键可能会更好。