Postgres 11 中 uuid 的最佳索引类型

dro*_*ert 4 postgresql index uuid

我意识到类似的问题已经被问过多次,但我能找到的所有问题都是 2014/2015 和 postgres 之前的许多版本。

我使用的是 postgres 11。我正在为 类型的表引入一个新的主键uuid。我发现自 postgres 10 以来,hash索引类型的状态非常好(例如http://rhaas.blogspot.com/2017/09/postgresqls-hash-indexes-are-now-cool.html),我想知道uuid现在 postgres 中的 key是否是更好的选择?


更新我意识到我遗漏了影响这个问题的部分用例。

我的主要用例是,我以前有一个复合主键,并将其替换为 UUID,以便于连接,并且不必将主键的数据传播到其他表。

从这个意义上说,我可能希望使用INCLUDE (composite, fields, here)仅支持btree索引类型的主键来创建主键。所以从这个意义上说,我有我的答案。

然而,我仍然对“通用”用例感到好奇,即只想快速访问通过主键查找值。

Dan*_*ité 5

我的主要用例是,我以前有一个复合主键,并将其替换为 UUID,以便于连接,并且不必将主键的数据传播到其他表。

哈希索引对此不起作用:它无法强制唯一性,因此它不能用于支持主键。正如v11 文档中提到的:

目前,只有 B 树索引可以声明为唯一。