是否应对数据库表中的键值进行哈希处理?

时间:2008-10-22 14:30:16

标签: database database-design hash key

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

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

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

3 个答案:

答案 0 :(得分:3)

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

答案 1 :(得分:2)

“哈希值是否会以任何方式优化操作?”不是真的。

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

如果要同时保留名称和名称哈希值,则通过包含派生数据来打破基本规则。现在名称更新需要哈希更新。

使用哈希值“均匀地传播我的价值”是指数的作用。

答案 2 :(得分:1)

不,不要哈希。您的数据库将根据数据构建索引,并且散列将无济于事。 可能帮助的唯一时间是你的密钥值比哈希值长得多。

相关问题