Нам нужно хранить много строк в таблице MySQL (InnoDB), каждая из которых имеет 8-байтовую двоичную строку в качестве первичного ключа.
Мне было интересно, лучше ли было использовать тип столбца BIGINT (который содержит 64-битные, то есть 8-байтовые целые числа) или BINARY (8), который имеет фиксированную длину.
Поскольку мы используем эти идентификаторы в качестве строк в нашем приложении, а не числа, их хранение в виде двоичных строк звучит для меня более логично. Тем не менее, мне интересно, есть ли проблемы с производительностью с этим. Есть ли какая-то разница?
Если это имеет значение, мы читаем / храним эти идентификаторы в шестнадцатеричном формате (например, page_id = 0x1122334455667788).
В любом случае мы не будем использовать целые числа в запросах, так как мы пишем приложение PHP и, как вы наверняка знаете, не существует типа «unsigned long long int», поэтому все целые числа зависят от машины.