В 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.