Есть ли способ создать «подпись» строки, чтобы убедиться, что строка уникальна?Или я должен использовать уникальный индекс БД? - PullRequest
0 голосов
/ 23 марта 2011

Я создаю сайт. Пользователи могут отправлять «Заголовок», который представляет собой строку символов Unicode (не только английский).

Когда пользователь отправляет «Заголовок», я хочу посмотреть, находится ли он уже в базе данных (MySQL). Если это так, я бы просто обновил существующую запись. Если это новый «Заголовок», я бы создал для него новую запись.

Полагаю, стандартный способ проверки уникальности - просто создать ИНДЕКС для столбца «Заголовок». Но меня беспокоит размер такого индекса, потому что «Заголовок» может быть довольно длинным.

Итак, мне интересно, есть ли способ создать «подпись» «Заголовка» и использовать ее для проверки уникальности? Есть ли какая-нибудь хеш-функция, которая бы хэшировала из строки в юникоде в уникальное значение?

Любые указатели будут с благодарностью. Спасибо.

1 Ответ

4 голосов
/ 23 марта 2011

Простой ответ - использовать одну из хеш-функций MySql (MD5 SHA1), чтобы создать хеш каждого заголовка и сохранить его вместе с самим заголовком.

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

Это в основном криптографические функции, которые потребляют много ресурсов процессора, но ваша языковая среда может предоставить более простой более быстрый хеш, такой как crc32.

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

Таким образом, «STACKOVERLOW IS GREAT ......» и «stackoverflow is great» приводят к одному и тому же хешу.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...