如果我理解正确,完全随机的UUID值会创建分散的索引。更准确地说,缺乏共同前缀会导致索引无法进行密集的trie存储。
有人建议使用uuid_generate_v1()或uuid_generate_v1mc()代替uuid_generate_v4()来避免这个问题。
然而,似乎UUID规范的第一个版本将ID的低位放在前面,防止共享前缀。此外,这个时间戳是60位,可能有些过度。
相比之下,一些数据库提供了非标准的UUID生成器,其中包含前导32位时间戳和12字节的随机数。例如,Datomic的Squuid [1] [2]。
在Postgres中使用这样的“Squuids”是否有意义?如果有,如何在pgplsql中高效地生成这样的ID?
有人建议使用uuid_generate_v1()或uuid_generate_v1mc()代替uuid_generate_v4()来避免这个问题。
然而,似乎UUID规范的第一个版本将ID的低位放在前面,防止共享前缀。此外,这个时间戳是60位,可能有些过度。
相比之下,一些数据库提供了非标准的UUID生成器,其中包含前导32位时间戳和12字节的随机数。例如,Datomic的Squuid [1] [2]。
在Postgres中使用这样的“Squuids”是否有意义?如果有,如何在pgplsql中高效地生成这样的ID?
SP-GiST
类型的索引的text_ops
操作符族请求时,才会获得 trie 存储。 - Daniel Vérité