Должны ли хешироваться значения ключей в таблице базы данных? - PullRequest
2 голосов
/ 22 октября 2008

Предположим, что таблица базы данных имеет столбец «Имя», который определен как ключ для таблицы. Обычными значениями имени будут «Билл», «Элизабет», «Боб», «Алиса». Поиск по таблице также будет выполняться по имени ключа.

Оптимизирует ли хеширование значений операции каким-либо образом? т.е. ввод каждого имени в виде некоторого хешированного значения имени (предположим, MD5 - 32 бита).

Если так - разве это не должно быть функцией базы данных, а не чем-то, что обрабатывает клиент?

Ответы [ 3 ]

3 голосов
/ 22 октября 2008

Предполагая, что ваша база данных генерирует индекс для первичного ключа (и я не могу представить, что это не так), он делает это для вас. Так что да, это должно быть то, что база данных обрабатывает.

2 голосов
/ 22 октября 2008

«Оптимизирует ли хеширование значений операции каким-либо образом?» Не совсем.

Хэши односторонние. Вы не можете выполнить сканирование таблицы и восстановить имя оригинала.

Если вы хотите сохранить как имя, так и хеш-имя, вы нарушили фундаментальное правило, включив производные данные. Теперь для обновления имени требуется обновление хеша.

"Распределение моих значений вокруг равномерно", которое случается с хэшем, является работой индекса.

1 голос
/ 22 октября 2008

Нет, не хэшируйте их. Ваша база данных будет строить индекс на основе данных, и хеширование не поможет. Единственный раз, когда может помочь, это если значения ключей были намного длиннее хеша.

...