我应该为数据库中的ID使用哪种数据类型?

时间:2019-02-11 01:51:27

标签: database database-design uuid

我看到许多关于数据库中的id应该使用integer(increment)和uuid的辩论和文章。

介绍了整数和uuid的一些优缺点。

例如,      整数:快速,但可用大小有限(除非使用bigint)      uuid:非常独特且更加安全,但速度较慢,并且可以存储-            消费

然后,我想知道是否使用长度大约为10(varchar(10))的随机字符串,该字符串由大写和小写字母组成,并且整数可以解决问题,因为它们的大小不是很大,并且可以覆盖很大的范围。数据(如果10个字符,则为62 ^ 10种方式。)

所以,我的问题是,这样做是好事还是坏事?

1 个答案:

答案 0 :(得分:1)

在数据库设计上没有绝对的坏处。您应该根据需要设计数据库。

您提到了使用int和uuid的利弊,现在我建议您列出您的需求,以便您选择使用哪个。

还请记住,您可以使用一些技巧来解决int和uuid的限制。

例如,如果uuid似乎是您的正确选择,但是在数据库中查找它们的速度却困扰您,那么您可以简单地使用索引来最大化uuid的速度。如果您有许多写操作并且需要快速写这些内容,则可以使用预生成的uuid。 (生成一些uuid,将它们编入索引,并在每次需要时选择其中的一个)

对于整数,您可以简单地使用2个整数作为您的ID,这两个整数将共同构成ID或其他数学算法,使其更加安全,但又足够快。

这只是两个示例,说明如何优化系统,以使其速度足够快,并以最佳方式满足您的需求。

对于可以在数据库设计中同时使用ints和uuid的情况:如果这是满足您的需求并从中获得最佳性能的最佳方式,那就完全可以了。