2015-11-06 231 views
1

我一直在阅读很多关于在postgres中实现UUID的原因,因为在某些情况下,我需要能够在将它们发送到数据库之前生成我的ID。我所做的很多阅读都警告UUID对性能的影响。他们提到一个非连续的主键会如何严重影响性能。PostgreSQL:生成自定义的MongoDB-ObjectID-like UUID作为主键

UUID v4是无用的,因为使用所有随机数来计算id是非顺序的,因为它是随机的。我想使用v1,但在id中包含MAC地址似乎不必要,也不安全。我想要做的是生成一个MongoDB ObjectID风格的UUID。我希望它基本上由时间戳和表名组成,这样当ID被排序时,它将按顺序排序。

有没有办法做到那里我可以生成这个自定义的UUID,并让Postgres以顺序的方式将它们存储在uuid的时间戳上?

+0

*他们提到了非连续的主键会如何严重地影响性能。什么?咦?请引用。 URL,文章名称等.UUID的主要问题在于它的128字节宽,因此您的索引更大,查询速度更慢。 –

+0

哦,你打算使用uuid而不是时间戳,或者依靠嵌入在v1 uuid中的时间戳。不要这样做。存储时间戳。 –

回答