2013-04-05 3 views
6

Я хочу хранить Почтовый индекс (в пределах США) в базе данных MySQL. Сохранение пространство является приоритетом. который является лучшим вариантом с использованием VARCHAR - ограничен максимальной длиной 6 цифр или с использованием INT или с использованием MEDIUM Int. Почтовый индекс не будет использоваться для каких-либо вычислений. Почтовый индекс будет использоваться для вставки (один раз), обновления (если требуется) и Retrieved - один раз (но это может быть несколько раз).Каков наилучший тип столбца для почтового индекса США?

Какой вариант лучше использовать здесь VARCHAR или INT или MEDIUM IN MYSQL? Пожалуйста, предложите что-нибудь еще?

+0

Возможный дубликат [полезно использовать целочисленный столбец для хранения почтовых индексов США в базе данных?] (Http://stackoverflow.com/questions/893454/is-it-a-good-idea- в использовании-ан-целочисленный столбец для накапливающего-нас-ZIP-кода-в-databas) – Taryn

ответ

12

Есть несколько проблем с сохранением почтового индекса в виде числового значения.

  1. Почтовые индексы имеют расширения, то есть они могут быть 12345-6789. Вы не можете сохранить тире в числовом типе данных.
  2. Существует много почтовых индексов, начинающихся с нуля, если вы храните их как int, вы потеряете начальный ноль.
  3. Вы не добавляете/вычитаете и т. Д. Почтовые индексы или не используете с ними числовые функции.

Я бы разместил почтовый индекс как varchar(5) или varchar(10).

В качестве примечания стороны, я не уверен, почему вы выбрали varchar(6), есть ли у вас причина выбора необычной длины, если стандартные почтовые индексы 5 или 10 с расширением?

4

Обычно я использую MEDIUMINT(5) ZEROFILL для 5-значных почтовых индексов. Это сохраняет все ведущие 0 s и использует только 3 байта, где VARCHAR(5) будет использовать 6. Это предполагает, что вам не нужны расширенные почтовые индексы, у которых есть тире и 4 дополнительных номера. Если бы вы решили использовать текстовый тип, я бы использовал CHAR(5) вместо VARCHAR(5), так как лучше, если данные всегда состоят из 5 символов.

3

Почтовые индексы всегда 5 символов, поэтому вам потребуется тип данных CHAR, а не VARCHAR.

Ваши варианты поэтому

CHAR(5) 

MEDIUMINT (5) UNSIGNED ZEROFILL 

Первый занимает 5 байт на почтовый индекс.

Второй занимает всего 3 байта на почтовый индекс. Опция ZEROFILL необходима для почтовых индексов с начальными нулями.

Итак, если пространство является вашим приоритетом, используйте MEDIUMINT.

1

Я бы предложил использовать тип данных VARCHAR, потому что в некоторых странах почтовые индексы используются как буквенно-цифровые и в других местах как целое. Поэтому мы не можем использовать целое число для глобального использования. Кроме того, почтовый индекс может начинаться с нуля, как 001101, поэтому в этом случае, если мы возьмем целочисленный тип данных, тогда будет проигнорирован начальный ноль, чтобы мы не смогли передать фактический почтовый индекс.

Смежные вопросы