Database 我应该使用UUID还是其他什么?
通常我有一个任务,需要收集一个对象,并且在保存到DB(PostgreSQL)之前需要知道它的ID 我可以用UUID实现这一点,但它有很多缺点:Database 我应该使用UUID还是其他什么?,database,performance,postgresql,join,uuid,Database,Performance,Postgresql,Join,Uuid,通常我有一个任务,需要收集一个对象,并且在保存到DB(PostgreSQL)之前需要知道它的ID 我可以用UUID实现这一点,但它有很多缺点: -选择或包含时性能较差 -连接性能较差 -需要更多的空间吗 所以问题是:如何事先为对象生成一个ID,并将UUID的负面影响降至最低?您可以使用任何编程语言中的任何UUID生成器来实现这一点。我建议在PostgreSQL中使用uuid类型,以避免在空间或连接方面需要太多开销。PostgreSQL也不包含生成这些数据的方法,因此必须先生成它们 您可能会遇到的
-选择或包含时性能较差
-连接性能较差
-需要更多的空间吗
所以问题是:如何事先为对象生成一个ID,并将UUID的负面影响降至最低?您可以使用任何编程语言中的任何UUID生成器来实现这一点。我建议在PostgreSQL中使用uuid类型,以避免在空间或连接方面需要太多开销。PostgreSQL也不包含生成这些数据的方法,因此必须先生成它们 您可能会遇到的一个主要问题是,对于数字ID,许多事情相对来说都是无痛的,这成为UUID的一个更大问题。这些措施包括:
但是,如果在PostgreSQL中使用UUID类型,选择和连接性能应该不会太差。如何生成UUID取决于程序员我们在一个项目中遇到了这个问题。我运行了一些测试(大约400万行,如果我没记错的话),这表明UUID与ints相比对PG的性能并没有太大的影响。使用UUID作为主键已经有一段时间了,我会毫不犹豫地再次这样做。尽管如此,我必须补充一点,我们还没有看到它在大规模生产中的表现 看看这个: 使用UUID的好处在于,您永远不必担心冲突。这不是件好事:如果您手动输入测试查询,它们会有点麻烦 如果最终基于大量UUID列表进行选择,请使用以下技巧: 希望这有帮助
Adam.当然,UUID的性能应该低于integer,问题在于数据量。老实说,4M数据太小,无法说明是否会出现性能问题,当然,如果需求映像显示数据量仍然小于4M,那也没关系
在文档中,它更好地建议如何以及何时使用UUID为什么不让数据库分配一个
serial
id?这在很多很多数据库中都可以使用。+@GordonLinoff,只需使用INSERT。。。返回id