我正在为 PostgreSQL 创建自定义类型。类型如下:
typedef struct {
unsigned long prefix;
unsigned long long id;
} CustomType;
我已经构建了所有的in
和out
函数。比较函数等等,但我不明白如何构建哈希函数。因为我需要它来进行哈希连接。我查看了https://doxygen.postgresql.org/backend_2utils_2adt_2numeric_8c.html#a1358689e8be944cad3a3fad87eb237f1hash_numeric
中的函数,但不太明白。
哈希函数是如何工作的,它的目的是什么?
此上下文中的散列函数用于将所有可能类型值的集合转换为一个小得多的散列值集合。散列连接的工作原理是根据它们的散列值将需要进行相等比较的值分离到桶中。产生相同哈希并因此落入同一桶的值有可能相等,而不同桶中的值不可能相等,因此可以从考虑中删除。
整数的 10 桶散列的一个简单示例是返回其参数的最低有效位的函数。您可能可以在您的案例中使用内置
hash_any
函数,但请阅读手册中的注意事项HASHES
。作为旁注,您可以在PostBIS 中看到它的实现,
这是.sql
这是
hash_dna
,