MariaDB: проблема ограничения размера столбца varchar для уникального индекса - PullRequest
0 голосов
/ 17 сентября 2018

У меня проблема с созданием уникального индекса для таблицы с 3 миллионами строк в MariaDB.В нем более полумиллиона ключей строки utf-8, которые я хочу найти.Строки должны быть utf-8, потому что они содержат английские, немецкие, японские, испанские и кириллические символы.Использование индекса, который приводит к линейному поиску, вероятно, будет слишком медленным.

Проблема заключается в том, что максимальная общая длина utf-8 varchars в столбце составляет 21 844 символа.Допустимое количество отдельных символов на порядки меньше количества используемых ключей, и все ключи состоят из нескольких символов.(Обратите внимание, что в этом случае индексируемая таблица имеет фиксированный размер.)

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

Есть ли способ использовать MariaDB / MySQL для этого набора данных?Учитывая, что эти базы данных SQL могут управлять сотнями миллионов строк, должен быть способ эффективно индексировать относительно небольшую таблицу, состоящую всего из 3 миллионов строк.

1 Ответ

0 голосов
/ 17 сентября 2018

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

Теоретически возможны коллизии хэшей, но для 3 миллионов это кажется маловероятным.

...