uuid_v7_numeric
LARGEINT 型の時間順序付き UUID v7 を返します。UUID v7 は RFC 9562 で定義されています。ランダムに生成される UUID v4 と比較して、UUID v7 は時間順序を保持するため、データベースにおいてインデックスの局所性が向上し、断片化が軽減されるなど、より高いパフォーマンスが期待できます。
本関数は UUID v7 を文字列形式ではなく、128 ビット整数(LARGEINT) として返します。そのため、保存や比較処理においてより効率的です。
この関数は非決定性関数であり、呼び出すたびに異なる UUID を生成します。
構文
uuid_v7_numeric()
戻り値
LARGEINT 型(128 ビット整数) の値を返します。
例
mysql> SELECT uuid_v7_numeric();
+---------------------------------------+
| uuid_v7_numeric() |
+---------------------------------------+
| 2088748395792837468371928374619283746 |
+---------------------------------------+
1 row in set (0.01 sec)
利点
- 時間順序付き:後から生成された UUID は、以前のものより大きな値になります。
- インデックス性能の向上:B-tree インデックスにおける局所性が向上します。
- 断片化の軽減:順次挿入によりページ分割が減少します。
- 一意性の確保:ランダムビットにより、同一ミリ秒内でも重複を防ぎます。
- 効率的な保存:数値形式は文字列形式よりコンパクトになる場合があります。
uuid_numeric との比較
| 項目 | uuid_numeric() (v4) | uuid_v7_numeric() (v7) |
|---|---|---|
| 順序性 | ランダム | 時間順序付き |
| インデックス性能 | 低い | 高い |
| 断片化 | 高い | 低い |
| タイムスタンプ情報 | なし | あり(48 ビットのミリ秒) |