是否可以使用散列算法来节省数据库中的空间?

时间:2010-05-01 08:45:17

标签: database

我最近一直在使用git,我非常喜欢GIT如何通过使用基于sha1的散列函数来避免重复类似数据的概念。我想知道当前的数据库是否做了类似的事情,或者由于某些原因这是否效率低下?

2 个答案:

答案 0 :(得分:2)

没有必要这样做。数据库已经有了避免重复数据的好方法 - 数据库规范化。

例如,假设您有一个可以包含五个不同字符串之一的列。您应该将这些字符串移到单独的表中,而不是将其中一个字符串存储到每一行中。创建一个包含两列的表,一列包含字符串值,另一列包含主键。您现在可以在原始表中使用外键,而不是存储整个字符串。

答案 1 :(得分:1)

我提出了一个很好的“基于重用的哈希”技术(它可能被广泛使用)

我计算了行中所有字段的哈希码,然后我将这个哈希码用作主键。

当我插入时,我只是做了“INSERT IGNORE”(以抑制有关重复主键的错误)。无论哪种方式,我都可以确定我想插入的内容在插入后存在于数据库中。

如果这是一个已知的概念,我会很高兴听到它!