2

假设一个数据库表有一个列“名称”,它被定义为表的键。通常的名称值为“Bill”、“Elizabeth”、“Bob”、“Alice”。表上的查找也将通过名称键完成。

散列值是否以任何方式优化操作?即输入每个名称作为名称的一些散列值(假设 MD5 - 32 位)。

如果是这样 - 这不应该是数据库的一个功能,而不是客户端处理的东西吗?

4

3 回答 3

3

假设您的数据库为主键生成索引(我无法想象它不会),它正在为您执行此操作。所以是的,它绝对应该是数据库处理的东西。

于 2008-10-22T14:31:21.590 回答
2

“散列值是否以任何方式优化操作?” 不是真的。

哈希是单向的。您无法进行表扫描并重建原始名称。

如果您想同时保留名称和名称哈希,那么您通过包含派生数据违反了基本规则。现在名称更新需要哈希更新。

散列会发生的“均匀分布我的值”是索引的工作。

于 2008-10-22T14:34:43.377 回答
1

不,不要散列它们。您的数据库将根据数据建立索引,而散列将无济于事。唯一可能有帮助的是您的键值比散列长得多。

于 2008-10-22T14:35:46.510 回答