postgresql – 我应该如何索引Postgres中的UUID?

postgresql – 我应该如何索引Postgres中的UUID?,第1张

概述我是PostgreSQL的新手,对数据库来说有点新鲜.我们应该如何在Postgres中索引 UUID值?我在使用散列和使用trie之间分开,除非它已经内置了自动使用的内容.无论我使用什么,都将处理大量数据. SP-GiST运算符族“text_ops”索引使用trie.因为UUID非常长而且非常不同,即使我只进行完全匹配搜索,这些听起来也很吸引人. 还有一个哈希选项.哈希是O(1),除了平等之外我不 我是Postgresql的新手,对数据库来说有点新鲜.我们应该如何在Postgres中索引 UUID值?我在使用散列和使用trIE之间分开,除非它已经内置了自动使用的内容.无论我使用什么,都将处理大量数据.

SP-GiST运算符族“text_ops”索引使用trIE.因为UUID非常长而且非常不同,即使我只进行完全匹配搜索,这些听起来也很吸引人.

还有一个哈希选项.哈希是O(1),除了平等之外我不需要做任何比较,但是因为UUID很长,我担心从它们产生哈希会浪费很多时间.

或者这是否过分依赖于系统和使用细节?

在大多数情况下我宁愿使用bigserial,但我被告知要使用uuID.我们需要uuID,因为我们可能有多个服务器使用不同的数据库,所以不能保证我们会有独特的bigint.我们可以为每个服务器使用不同的序列(和种子),但它仍然不如UUID灵活.例如,我们无法将数据库条目从一个服务器迁移到另一个服务器,而无需在任何地方转换ID及其引用.

使用Postgresql的内置 uuid data type和 create的常规b树索引.

没有必要做任何特别的事情.这将产生最佳索引,并且还将uuID字段存储为当前实际的紧凑形式.

(版本10之前的Postgresql中的哈希索引不是崩溃安全的,并且实际上是一个历史遗迹,无论如何都倾向于表现不比b树好.避免使用它们.在Postgresql 10上,它们已经成为崩溃安全的并且有一些性能改进,所以你可能希望考虑它们.)

如果由于某种原因你不能使用uuID类型,你通常会在文本表示上创建一个b树,或者最好是在uuID的bytea表示.

总结

以上是内存溢出为你收集整理的postgresql – 我应该如何索引Postgres中的UUID?全部内容,希望文章能够帮你解决postgresql – 我应该如何索引Postgres中的UUID?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/sjk/1168392.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-01
下一篇 2022-06-01

发表评论

登录后才能评论

评论列表(0条)

保存