我经常看到这样做的两种方式:
1: UUID为ID
Schema::create('orders', function (Blueprint $table) {
$table->uuid('id')->unique();
...2: UUID和自动递增ID
Schema::create('orders', function (Blueprint $table) {
$table->bigIncrements('id');
$table->uuid('uuid')->unique();
...这两种方法都有什么显著的好处吗?我认为,有一点我认为是一个好处的选项,是与急于加载。例如:
select * from `order_addresses` where `order_addresses`.`id` in (1, 2, 3, 4, 5)与
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')然而,我不是百分之百。有人能提供更多的参数和/或验证上述内容吗?
发布于 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存储在数据库中。
发布于 2019-10-25 10:27:19
UUID更适合于n层应用程序,其中每个应用程序都可以创建自己的标识符,而不会破坏“唯一”规则。
没有必要两者兼得,没有符号的大整数和UUID之间的速度差异很小。
UUID使用更多的空间,仅此而已。
https://stackoverflow.com/questions/58556493
复制相似问题