Какой индекс я должен использовать для столбца двоичного типа данных mysql
Я пишу простой инструмент для проверки дубликатов файлов (т.е. файлов, имеющих одинаковые данные). Механизм состоит в том, чтобы генерировать хеши для каждого файла с использованием алгоритма sha-512, а затем сохранять эти хеши в базе данных MYSQL. Я храню хеши в двоичном (64) уникальном ненулевом столбце. Каждая строка будет иметь уникальный двоичный хэш и использоваться для проверки дубликата файла или нет.
- Мои вопросы -
Могу ли я использовать индексы для двоичного столбца, моя таблица сортировки по умолчанию - latin1 - сортировка по умолчанию?
Какой механизм индексации я должен использовать Btree или Hash, чтобы получить высокую производительность? Мне нужно обновить или добавить 100 строк в секунду.
О каких еще вещах я должен заботиться, чтобы получить лучшую работу?
1 ответ
Могу ли я использовать индексы для двоичного столбца, моя таблица сортировки по умолчанию - latin1 - сортировка по умолчанию?
Да, ты можешь; параметры сортировки имеют отношение только к типам данных символов, а не к двоичным типам данных (они определяют порядок упорядочения символов) - также следует учитывать, что
latin1
это кодировка символов, а не сортировка.Какой механизм индексации я должен использовать Btree или Hash, чтобы получить высокую производительность? Мне нужно обновить или добавить 100 строк в секунду.
Обратите внимание, что хеш-индексы доступны только с
MEMORY
а такжеNDB
механизмы хранения, так что у вас может даже не быть выбора.В любом случае, любой из них, как правило, сможет соответствовать вашим критериям производительности, хотя для этого конкретного приложения я не вижу никакой выгоды от использования B-Tree (который заказан), тогда как Hash даст лучшую производительность. Поэтому, если у вас есть выбор, вы также можете использовать Hash.
См. Сравнение B-Tree и Hash Index для получения дополнительной информации.
О каких еще вещах я должен заботиться, чтобы получить лучшую работу?
Зависит от вашего определения "лучшая производительность" и вашей среды. В общем, помните изречение Кнута "преждевременная оптимизация - корень всего зла": то есть оптимизируйте только тогда, когда вы знаете, что при простейшем подходе возникнут проблемы.