Я работаю над приложением, которое будет реализовывать шестнадцатеричное значение в качестве бизнес-ключа (в дополнение к полю автоинкремента в качестве первичного ключа), аналогично URL-идентификатору в Gmail. Я буду добавлять уникальное ограничение к столбцу и изначально думал о сохранении значения как bigint, чтобы избежать поиска поля varchar, но мне было интересно, если это необходимо, если поле уникально.
Внутренние объединения будут выполняться с использованием поля автоматического приращения, а шестнадцатеричное значение будет использоваться в предложении where для фильтрации.
Какое снижение производительности будет иметь место при простом сохранении значения как varchar (x) или, возможно, char (x) по сравнению с дополнительной работой по преобразованию в шестнадцатеричное число и обратно, чтобы сохранить значение как целое база данных? Стоит ли дополнительная сложность?
Я провел быстрый тест на небольшом количестве строк (50 КБ), и у меня были похожие результаты поиска. Если есть большая проблема с производительностью, будет ли она линейной или экспоненциальной?
Я использую InnoDB в качестве движка.