sql - 使用一组整数作为 SQL 键的最佳方法?

标签 sql postgresql

<分区>

我发现自己需要为整数集存储一些数据,我想知道如何做到最好。

简单的方法是简单地对它们进行排序并制作一个字符串作为主键。这个 205 字符的字符串就是一个典型的例子:

“1 8 9 10 13 14 15 19 25 35 41 73 78 106 106 107 112 121 138 166 166 167 167 169 182 182 187 190 194 194 197 248 253 483 483 497 752 767 1605 1605 1609 1609 1614 1652 1652 1748 1874 1925 1925 1925 1934 2633 2635 2635 2635 2635 2636 2643 2685 2809 2867 2876 3303 3361"

我相信这会奏效,但它看起来笨拙且无效。人们使用的交易技巧有什么用吗?字符串长度在这里有多重要?

如果重要的话,我在 Postgres 中。

最佳答案

您的用例似乎是:我有一个生成一组整数的应用程序。如果它以前见过这些整数,那么它可以查找答案而不是花时间计算。

为此,使用生成的有序整数字符串作为主键似乎是一个合理的解决方案(假设排序对您的应用程序不重要)。就个人而言,我倾向于对字符串进行哈希处理,以便快速查找,但这对于二叉树搜索来说并不重要。

其实,话说回来,Postgres支持hash indexes :

CREATE INDEX name ON table USING HASH (column);

因为您只想进行相等比较,所以这是最适合您使用的索引。

不过,正如 a_horse_with_no_name 指出的那样,哈希索引基本上是无用的,二叉树应该正好适合索引。

关于sql - 使用一组整数作为 SQL 键的最佳方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42047799/

相关文章:

ruby-on-rails - Rails 4 - has_one - 无法访问相关模型的属性

Django Admin 搜索优化

SQL 服务器 : OFFSET FETCH performs scan while TOP WHERE performs seek?

sql - ** 在 SQL Server Management Studio 中查看执行计划时的受限文本 **

php - 自动设置外键值

sql-server - SQL Server 2000,获取 COUNT(DISTINCT ID) 的条件是我无法写入 WHERE?

mysql - 选择比符合条件的行晚的所有行

sql - 具有多个 SET 的 PostgreSQL UPDATE

postgresql - 使用 unnest 在 postgreSQL 中批量更新

postgresql - 在 AWS Aurora/postgres 上收听/通知