Каков наилучший способ проверки дублирующих полей TEXT в MYSQL / PHP?

Мой код вытягивает ~ 1000 файлов HTML, извлекает соответствующую информацию и затем сохраняет эту информацию в поле MySQL TEXT (как правило, довольно долго). Я ищу систему для предотвращения дублирования записей в БД

Моя первая идея – добавить в таблицу HASH-поле (возможно, MD5), вывести хэш-список в начале каждого запуска и проверить дубликаты перед вставкой в ​​БД.

Вторая идея заключается в том, чтобы хранить длину файла (байты или символы или что-то еще), индексировать, и проверять длину повторяющихся файлов, дважды проверять содержимое, если найдена повторяющаяся длина.

Не знаю, каково наилучшее решение по производительности. Может быть, есть лучший способ?

Если есть эффективный способ проверить, есть ли файлы на 95%, что было бы идеально, но я сомневаюсь, что есть?

Спасибо за любую помощь!

BTW Я использую PHP5 / Kohana


РЕДАКТИРОВАТЬ:

просто появилась идея проверить сходство: я мог считать все буквенно-цифровые символы и регистрировать появление каждого

например: 17aB … = 1a, 7b, 10c, 27c, …

потенциальной проблемой будет верхний предел для char char (около 61?)

Я полагаю, что ложные срабатывания все равно будут редкими. , ,

хорошая идея / плохая идея?

Solutions Collecting From Web of "Каков наилучший способ проверки дублирующих полей TEXT в MYSQL / PHP?"

Идея хэша, вероятно, самая лучшая. У вас могут быть столкновения, но они были бы чрезвычайно редкими.

Сделайте поле hash уникальным ключом для таблицы и поймайте дубликат кода ошибки. Или используйте insert ignore или insert replace .

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

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

MD5 – 16 байт. Сколько потенциальных хэшей будет со временем? Если это число остается разумным, вы должны быть в порядке, используя сравнение в памяти.