mysql - тип данных для мобильных устройств. десятичный против varchar

Я сохранил номер телефона / мобильного телефона с кодом страны в таблице mysql. для этого я использовал десятичный тип данных для обоих полей (например, для десятичного кода набора (5,0), мобильного десятичного кода (20,0)). Мой мобильный и телефонный код или код страны должен быть цифровым. Теперь я собираюсь изменить его с помощью varchar(5) для телефонного кода и varchar(20) для mobileno.

Это нормально для производительности? Кто-нибудь может сказать мне, какой должна быть максимальная длина для мобильного (любая страна)? и если какой-либо другой тип данных, такой как flote или integer, предпочтителен для вышеуказанного случая? если да, то почему?

Благодарю.

1 ответ

Этот вопрос рискует спросить мнение. Тем не менее, я думаю, что у него есть "правильный" или, по крайней мере, "лучший" ответ.

Вы должны использовать числовые типы, когда вы храните числа. Числа обладают свойствами упорядоченности и способности выполнять арифметику с ними. Многие вещи хранятся в виде чисел, которые не имеют этих свойств - подумайте о номерах кредитных карт, почтовых индексах и кодах FIP. Номера телефонов также попадают в эту категорию.

Одним из важных соображений является то, важны ли ведущие нули. Для фактических чисел это не важно. Для кодов, в которых используются цифры, они важны.

Итак, я бы посоветовал вам хранить значения в виде символьных строк. Я понятия не имею, какой самый длинный номер телефона, но я бы не хотел, чтобы моя база данных зависела от сегодняшнего максимального значения. Просто используйте что-то вроде varchar(255), что должно быть более чем достаточно в течение длительного времени.

Другие вопросы по тегам