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

时间:2017-02-05 01:57:31

标签: sql postgresql

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

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

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

我确信它会起作用,但它看起来很笨拙和无效。是否有人使用的交易技巧?字符串长度在这里多少重要?

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

1 个答案:

答案 0 :(得分:1)

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

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

实际上,话虽如此,Postgres支持hash indexes

CREATE INDEX name ON table USING HASH (column);

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

正如a_horse_with_no_name指出的那样,哈希索引基本上没用,而二叉树应该对索引很好。