【问题标题】:Should key values in a database table be hashed?数据库表中的键值是否应该被散列?
【发布时间】:2010-09-18 13:35:31
【问题描述】:

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

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

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

【问题讨论】:

    标签: database database-design hash key


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

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

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

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

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

      【讨论】:

        【解决方案3】:

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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2011-08-10
          • 2010-10-24
          • 1970-01-01
          • 1970-01-01
          • 2015-02-03
          • 2012-03-17
          • 2012-02-14
          相关资源
          最近更新 更多