假设一个数据库表有一个列“名称”,它被定义为表的键。通常的名称值为“Bill”、“Elizabeth”、“Bob”、“Alice”。表上的查找也将通过名称键完成。
散列值是否以任何方式优化操作?即输入每个名称作为名称的一些散列值(假设 MD5 - 32 位)。
如果是这样 - 这不应该是数据库的一个功能,而不是客户端处理的东西吗?
假设一个数据库表有一个列“名称”,它被定义为表的键。通常的名称值为“Bill”、“Elizabeth”、“Bob”、“Alice”。表上的查找也将通过名称键完成。
散列值是否以任何方式优化操作?即输入每个名称作为名称的一些散列值(假设 MD5 - 32 位)。
如果是这样 - 这不应该是数据库的一个功能,而不是客户端处理的东西吗?
假设您的数据库为主键生成索引(我无法想象它不会),它正在为您执行此操作。所以是的,它绝对应该是数据库处理的东西。
“散列值是否以任何方式优化操作?” 不是真的。
哈希是单向的。您无法进行表扫描并重建原始名称。
如果您想同时保留名称和名称哈希,那么您通过包含派生数据违反了基本规则。现在名称更新需要哈希更新。
散列会发生的“均匀分布我的值”是索引的工作。
不,不要散列它们。您的数据库将根据数据建立索引,而散列将无济于事。唯一可能有帮助的是您的键值比散列长得多。