如何从长字符串中生成用作表键的唯一值

本文关键字:唯一 字符串 | 更新日期: 2023-09-27 18:28:29

我想在数据库表中使用文件路径作为键。但是使用长字符串作为键并不是一种有效的方法。

所以我想了一些方法来缩小路径的大小。Object.GetHashCode()看起来很棒,特别是当它返回一个int时。

var key = path.GetHashCode();

但它写在文件中:

哈希代码用于在基于哈希表的集合。哈希代码不是永久价值。因此:

  • 不要序列化哈希代码值或将其存储在数据库中
  • 不要将哈希代码用作从带键集合中检索对象的键

那么,如何缩短在数据库中用作表键的路径字符串呢?

如何从长字符串中生成用作表键的唯一值

不要。您可以使用相当长的字符串作为基于查找的结构的键,而不会出现实际问题。基于哈希或排序的数据结构的整个设计是为了避免在搜索该结构时实际比较大量对象。

如果你用一些东西来"缩短"字符串,你有两个选项,假设所有缩短的字符串实际上都是唯一的,这意味着如果发生冲突,你的代码就不能正常工作,或者跟踪真实的字符串和缩短的字符串,并使用真实的字符串来处理冲突。后者正是像Dictionary这样的东西已经在为它的所有键做的事情,而数据库索引将要做一些类似的事情,所以你没有理由重新实现它

使用标识列创建代理项键。您仍然可以对文件路径进行索引或设置唯一约束。