Database 我应该为数据库上的ID使用什么数据类型?

Database 我应该为数据库上的ID使用什么数据类型?,database,database-design,uuid,Database,Database Design,Uuid,我看到了很多关于integer(increment)和uuid中的哪一个应该用于数据库上的ID的辩论和文章 这里介绍了整数和uuid的一些优缺点 比如说,, 整数:快速,但可用大小有限(除非使用bigint) uuid:非常独特,更安全,但速度慢,存储 消耗 然后,我想知道使用长度约为10(varchar(10))的随机字符串(由大小写字母和整数组成)能否解决问题,因为它们的大小不太大,可以覆盖广泛的数据(如果10个字符,则为62^10种方式) 所以,我的问题是,这样做是好还是坏?在数据库设计方

我看到了很多关于integer(increment)和uuid中的哪一个应该用于数据库上的ID的辩论和文章

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

比如说,, 整数:快速,但可用大小有限(除非使用bigint) uuid:非常独特,更安全,但速度慢,存储 消耗

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


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

在数据库设计方面没有绝对的好坏之分。您应该根据需要设计数据库

您提到了使用int和uuid的一些优缺点,现在我建议您列出您的需求,以便选择使用哪一种

还要记住,您可以使用一些技巧来绕过int和uuid的限制

例如,如果uuid似乎是您的正确选择,但在数据库中查找它们的速度让您感到困扰,那么您可以简单地使用索引来最大限度地提高uuid的速度。如果您有很多写操作,并且需要快速完成,那么可以使用预生成的UUID。(生成一些UUID,为它们编制索引,并在每次需要时提取其中一个UUID)

对于整数,您可以简单地使用2个整数作为您的id,这两个整数加在一起将使id或其他数学算法更安全,但速度足够快

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


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

听起来您只是在使用更糟糕的uuid——您确定现有的uuid生成是系统中的瓶颈吗?不,但是我发现一些文章说使用uuid不是一个好主意,因为它需要更大的容量,所以我想知道我是否应该使用它。而且,我觉得我不需要对每个表上的每个ID都使用uuid,例如,小型数据可以存储在int中,因为这样更有效。然而,这种用法使系统变得复杂。我认为我们使用“复杂”一词的方式有所不同。那么,在一个系统中同时使用uuid和integer,或者只使用其中一个是相当普遍的吗?