短网址:base36

时间:2014-08-12 09:49:16

标签: java postgresql playframework-2.2

在我的postgreSQL数据库中,我有一个bigint及其base36转换。

我的网址包含base36中的short_id和十进制版本,但我会根据网址查询base36。

可以base36 short_id成为我的primary key以获得更好的效果吗?

1 个答案:

答案 0 :(得分:1)

至少在PostgreSQL中,PRIMARY KEY与性能无关。这是关于正确性和数据结构。查询规划器不关心PRIMARY KEY,只关心通过定义UNIQUE NOT NULL约束创建的PRIMARY KEY索引。

您可以定义自己喜欢的索引。想要另一个独特的指数只需创建一个。

如果base36列保证唯一,那么是,它是主键的候选者。它是否是最佳选择,以及它实际上是否比您目前正在做的任何事情都快,在某种程度上依赖于应用程序。

请注意,额外的索引不是免费的 - 它们会导致插入和更新的成本。所以不要疯狂地为每个列创建多个索引以用于写入繁重的表。


顺便说一句,其他一些数据库系统PRIMARY KEY有更强的性能影响。特别是,在使用索引组织表的DB系统上(主表采用b树结构),选择聚类键 - 通常也是主键 - 对性能来说是一件大事。

在PostgreSQL中,每个表只是一个堆,所以它不相关。