首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在关系数据库中使用UUID列vs.和递增ID和单独的UUID列(Laravel,雄辩)

问在关系数据库中使用UUID列vs.和递增ID和单独的UUID列(Laravel,雄辩)
EN

Stack Overflow用户
提问于 2019-10-25 10:11:15
回答 2查看 1.6K关注 0票数 0

我经常看到这样做的两种方式:

1: UUID为ID

代码语言:javascript
复制
Schema::create('orders', function (Blueprint $table) {
    $table->uuid('id')->unique();
...

2: UUID和自动递增ID

代码语言:javascript
复制
Schema::create('orders', function (Blueprint $table) {
    $table->bigIncrements('id');
    $table->uuid('uuid')->unique();
...

这两种方法都有什么显著的好处吗?我认为,有一点我认为是一个好处的选项,是与急于加载。例如:

代码语言:javascript
复制
select * from `order_addresses` where `order_addresses`.`id` in (1, 2, 3, 4, 5)

与

代码语言:javascript
复制
select * from `order_addresses` where `order_addresses`.`id` in ('683d3bc7-edd7-4f12-a7eb-831bfc5e90eb','20d3d3f5-2b0d-45e0-9f17-f581317b3f97','907af98b-e433-4e55-a641-3f134ea9039c','7713462c-b8aa-4d11-a576-7d4634595a35','4a27368e-5ebe-43e4-bfaf-8be303a84318','e5e618d9-fd25-4f98-bc70-03bc378c338d','5aa3dd71-a4fc-44ac-a810-2e414372d1ed','9c62bbdc-2555-4239-81fd-365ada304619','a7f22427-b7e7-41c0-bc38-f84306f0bae6','386d8318-3da5-4de1-95d0-f144b53ed76d')

然而,我不是百分之百。有人能提供更多的参数和/或验证上述内容吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-10-17 15:02:02

基于字符串的UUID实际上在MySQL (和其他几个)的情况下确实有性能上的问题。

https://www.percona.com/blog/2019/11/22/uuids-are-popular-but-bad-for-performance-lets-discuss/

Laravel社区中的一种常见方法似乎是为主键使用一个自动递增的大整数,然后沿侧添加一个索引的UUID。

您还可以签出可用的二进制UUID包,这些包更有效地将UUID存储在数据库中。

票数 1
EN

Stack Overflow用户

发布于 2019-10-25 10:27:19

UUID更适合于n层应用程序,其中每个应用程序都可以创建自己的标识符,而不会破坏“唯一”规则。

没有必要两者兼得,没有符号的大整数和UUID之间的速度差异很小。

UUID使用更多的空间,仅此而已。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58556493

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档