背景:
我们希望能够在查询中快速匹配这些字符串,而不会影响大量连接.
所以我想在主表中存储所有这些字符串的哈希码并将其包含在索引中,因此只有当哈希码匹配时才会由数据库处理连接.
那么我如何获得一个好的哈希码呢?我可以:
那人们怎么想?
最后,我只是连接字符串并计算连接的哈希码,因为它很简单并且工作得很好.
(如果你关心我们使用的是.NET和SqlServer)
Bug!,Bug!
引自 Eric Lippert的GetHashCode指南和规则
System.String.GetHashCode的文档特别指出,两个相同的字符串在CLR的不同版本中可以具有不同的哈希码,实际上它们也是如此.不要在数据库中存储字符串哈希并期望它们永远是相同的,因为它们不会.
所以不应该使用String.GetHashcode().