UUID 從 RFC 4122 走到 RFC 9562,歷經 v1 到 v8 多個版本,設計目標各不相同。這篇整理 v1 時間加 MAC、v4 純隨機、v6 重排到 v7 時間排序的位元結構與背景,說明為什麼 UUIDv4 當資料庫主鍵會造成 B-tree 索引碎片、拖慢寫入,以及時間可排序的 UUIDv7 與 ULID 如何解決這個問題,並比較 v7 與 ULID 的取捨、給出主鍵選型建議,簡介 Snowflake、KSUID、NanoID,附上 PostgreSQL、Java、JavaScript、Python 產生 UUIDv7 與 ULID 的程式碼範例。