@immelnikoff
Изучаю БД

Как при INSERT-е происходит поиск переданного значения для поля ENUM по предопределенному списку значений?

В MySQL 8 имеется таблица, принимающая большой поток данных на запись (~ 10 000 в секунду):
CREATE TABLE `test` (
   `id` INT UNSIGNED NOT NULL,
   `unit` ENUM('Строка_1', 'Строка_2', ... , 'Строка_65535') NOT NULL,
   `ts` TIMESTAMP NOT NULL,
   PRIMARY KEY (`id`)
 ) ENGINE=InnoDB DEFAULT CHARSET=cp1251;

Как можно видеть, в таблице есть поле типа ENUM c 65 535 возможными вариантами значений.
Возникает вопрос.
Допустим, частоты встречаемости разных значений очень различна. Например, значение 'Строка_1000' встречается в 1000 раз чаще значения 'Строка_1'. Имеет ли в данном случае значение (с точки зрения производительности записи) порядок перечисляемых значений в определении таблицы? Или, другими словами, как происходит поиск полученного значения для поля unit по предопределенному списку значений? И, если поиск происходит линейно с начала списка, есть ли смысл формировать список значений для ENUM в порядке убывания частоты встречаемости?
Цель: минимизировать время на INSERT.
  • Вопрос задан
  • 162 просмотра
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы