我已在Heroku上使用PostgreSQL数据库创建了一个Rails应用程序。它有几个表格,设计用于能够与移动设备同步,在不同的地方可以创建数据。因此,我有一个uuid字段,它是存储GUID的字符串,除了自动递增的主键外。 uuid是服务器和客户端之间通信的标识符。
在实现服务器端的同步引擎后,我意识到每次需要映射uuid<->id时会导致性能问题(在编写对象时,我需要查询uuid以获取id,然后保存并在发送数据时进行相反操作)。
我现在正在考虑仅使用UUID作为主键,使编写和读取变得更简单和更快。我已经阅读过,将UUID用作主键有时会导致索引性能较差(索引碎片化),当使用聚集主键索引时。PostgreSQL是否存在此问题,是否可以使用UUID作为主键?
我已经有一个UUID列,因此在存储方面,删除常规ID列将更好。
在实现服务器端的同步引擎后,我意识到每次需要映射uuid<->id时会导致性能问题(在编写对象时,我需要查询uuid以获取id,然后保存并在发送数据时进行相反操作)。
我现在正在考虑仅使用UUID作为主键,使编写和读取变得更简单和更快。我已经阅读过,将UUID用作主键有时会导致索引性能较差(索引碎片化),当使用聚集主键索引时。PostgreSQL是否存在此问题,是否可以使用UUID作为主键?
我已经有一个UUID列,因此在存储方面,删除常规ID列将更好。
id
字段是否被任何其他关系作为外键使用?你只是保留这个id
字段,因为你认为主键应该是一个序列类型,出于你所描述的原因吗? - Joshua Berry