Если это число, сохраните его как число.
Целые числа хранятся с использованием 4 байта , давая им диапазон:
-2 ^ 31 (-2 147 483 648) до 2 31-1 (2 147 483 647)
Итак, подходит для ваших нужд.
char[8]
будет храниться как 8 байт , поэтому удваивайте объем памяти и, конечно, страдаете от необходимости расширения в будущем (преобразование почти 10 миллионов записей из 8 в 9 символов потребует времени и вероятно, потребуется перевести базу данных в автономный режим на время).
Таким образом, с точки зрения хранения, скорости, памяти и диска (все связано с количеством байтов, используемых для типа данных), читаемостью, семантикой и проверкой на будущее, int
выигрывает у всех.
Обновление
Теперь, когда вы пояснили, что вы не храните числа, я бы сказал, что вам придется использовать char
, чтобы сохранить ведущие нули.
Что касается проблемы с будущим расширением - поскольку char
- это поле фиксированной длины, изменение с char[8]
на char[9]
не приведет к потере информации. Однако я не уверен, будет ли добавлен дополнительный символ справа или слева (хотя это, возможно, не определено). Вам нужно будет протестировать, и после расширения поля вам нужно будет убедиться, что исходные данные были сохранены.
Лучшим способом может быть создание нового поля char[9]
, перенос в него всех данных char[8]
(для обеспечения надежности и согласованности), затем удаление поля char[8]
и переименование нового поля в исходное. название. Конечно, это разрушит всю статистику в таблице (но так же приведет к прямому расширению поля).