在数据库表中存储两个哈希列时是否存在性能损失?

时间:2017-04-04 14:40:05

标签: sql database performance hash

我们正在考虑在数据库表中引入第二个哈希列。第一个哈希列存储基于同一表中某些其他字段的值计算的哈希。第二个哈希列应包含基于来自与第一个哈希列使用的数据集不同的字段的值生成的哈希值。当数据插入表中时,哈希列由例程填充。

^ ID ^      Species    ^   Genus  ^  Family   ^    Order    ^  Class  ^   Phylum   ^ Kingdom  ^                    Hash 1                   ^                      Hash 2                        ^
|  1 | S. tetrahyralis | Syllepte | Crambidae | Lepidoptera | Insecta | Anthropoda | Animalia | hashingfunction(ID, Class, Phylum, Kingdom) | hashingfunction( Species, Genus, Family, Order,  ) |

我们有两个独立的例程来访问该表。第一个根据第一个哈希列的哈希值获取值,第二个根据第二个哈希列获取值 示例代码使用哈希值查询数据库:

var hashValue = new byte[hashingFunctionOutputLength];
// fill hashValue
using ( var context = new EntityContext() )
{ 
    var entity = context.Entities.SingleOrDefaultAsync(x => x.Hash == hashValue);
}

引入多个哈希列除了计算插入数据时计算两个哈希值的计算时间外,是否有任何危害?
根据哈希值查询数据库是否有问题?

0 个答案:

没有答案