最佳答案
我使用 PostgreSQL 数据库在 Heroku 的 Rails 中创建了一个应用程序。
它有两个表,可以与移动设备同步,数据可以在不同的地方创建。因此,我有一个 uuid 字段,它是一个字符串,除了自动增量主键之外,还存储 GUID。Uuid 是服务器和客户端之间通信的 uuid。
在服务器端实现了同步引擎之后,我意识到当需要始终在 uuid <-> id 之间进行映射时,这会导致性能问题(在编写对象时,我需要查询 uuid 来在保存前获取 id,而在发送回数据时则相反)。
我现在正在考虑切换到只使用 UUID 作为主键,使写作和阅读更加简单和快速。
我了解到,当使用聚集主键索引时,作为主键的 UUID 有时会导致索引性能不佳(索引碎片)。PostgreSQL 是否存在这个问题,或者可以使用 UUID 作为主键?
今天我已经有了一个 UUID 列,所以从存储的角度来说,这样会更好,因为我删除了常规的 id 列。