mirror of
https://github.com/ClickHouse/ClickHouse.git
synced 2024-09-20 00:30:49 +00:00
Merge pull request #63275 from rschu1ze/docs-uuid-workaround
Docs: Add workaround for UUID sorting
This commit is contained in:
commit
d9f2144788
@ -23,8 +23,8 @@ The default UUID is all-zero. It is used, for example, when a new record is inse
|
||||
00000000-0000-0000-0000-000000000000
|
||||
```
|
||||
|
||||
Due to historical reasons, UUIDs are sorted by their second half (which is unintuitive).
|
||||
UUIDs should therefore not be used in an primary key (or sorting key) of a table, or as partition key.
|
||||
Due to historical reasons, UUIDs are sorted by their second half.
|
||||
UUIDs should therefore not be used directly in a primary key, sorting key, or partition key of a table.
|
||||
|
||||
Example:
|
||||
|
||||
@ -43,18 +43,7 @@ Result:
|
||||
│ 3fda7c49-282e-421a-85ab-c5684ef1d350 │
|
||||
│ 16ab55a7-45f6-44a8-873c-7a0b44346b3e │
|
||||
│ e3776711-6359-4f22-878d-bf290d052c85 │
|
||||
│ 1be30226-57b2-4739-88ec-5e3d490090f2 │
|
||||
│ f65853a9-4375-4f0e-8b96-906ff622ed3c │
|
||||
│ d5a0c7a6-79c6-4107-8bb8-df85915edcb7 │
|
||||
│ 258e6068-17d1-4a1a-8be3-ed2ceb21815c │
|
||||
│ 04b0f6a9-1f7b-4a42-8bfc-62f37b8a32b8 │
|
||||
│ 9924f0d9-9c16-43a9-8f08-0944ab495aed │
|
||||
│ 6720dc14-4eab-4e3e-8f0c-10c4ae8d2673 │
|
||||
│ 5ddadb52-0452-4f5d-9030-c3f969af93a4 │
|
||||
│ [...] │
|
||||
│ 2dde30e6-59a1-48f8-b260-eb37921185b6 │
|
||||
│ d5402a1b-77b3-4897-b288-29edf5c3ed12 │
|
||||
│ 01843939-3ba7-4fea-b2aa-45f9a6f1e057 │
|
||||
│ 9eceda2f-6946-40e3-b725-16f2709ca41a │
|
||||
│ 03644f74-47ba-4020-b865-be5fd4c8c7ff │
|
||||
│ ce3bc93d-ab19-4c74-b8cc-737cb9212099 │
|
||||
@ -63,6 +52,34 @@ Result:
|
||||
└──────────────────────────────────────┘
|
||||
```
|
||||
|
||||
As a workaround, the UUID can be converted to a type with an intuitive sort order.
|
||||
|
||||
Example using conversion to UInt128:
|
||||
|
||||
``` sql
|
||||
CREATE TABLE tab (uuid UUID) ENGINE = Memory;
|
||||
INSERT INTO tab SELECT generateUUIDv4() FROM numbers(50);
|
||||
SELECT * FROM tab ORDER BY toUInt128(uuid);
|
||||
```
|
||||
|
||||
Result:
|
||||
|
||||
```sql
|
||||
┌─uuid─────────────────────────────────┐
|
||||
│ 018b81cd-aca1-4e9c-9e56-a84a074dc1a8 │
|
||||
│ 02380033-c96a-438e-913f-a2c67e341def │
|
||||
│ 057cf435-7044-456a-893b-9183a4475cea │
|
||||
│ 0a3c1d4c-f57d-44cc-8567-60cb0c46f76e │
|
||||
│ 0c15bf1c-8633-4414-a084-7017eead9e41 │
|
||||
│ [...] │
|
||||
│ f808cf05-ea57-4e81-8add-29a195bde63d │
|
||||
│ f859fb5d-764b-4a33-81e6-9e4239dae083 │
|
||||
│ fb1b7e37-ab7b-421a-910b-80e60e2bf9eb │
|
||||
│ fc3174ff-517b-49b5-bfe2-9b369a5c506d │
|
||||
│ fece9bf6-3832-449a-b058-cd1d70a02c8b │
|
||||
└──────────────────────────────────────┘
|
||||
```
|
||||
|
||||
## Generating UUIDs
|
||||
|
||||
ClickHouse provides the [generateUUIDv4](../../sql-reference/functions/uuid-functions.md) function to generate random UUID version 4 values.
|
||||
|
Loading…
Reference in New Issue
Block a user