2010-08-26 3 views
2

Часто при создании нового веб-приложения и настройке MySQL некоторые поля должны будут меняться в формате по мере разработки приложения. Например, я могу изменить формат поля даты или поле, которое когда-то было просто int, теперь нуждается в письме, а что нет. Поэтому, как правило, я просто делаю все поля Varchar 255 до тех пор, пока Im не закончит, в какое время я буду менять типы данных на правильные.Назначение типа данных MySQL

Так что мой вопрос в том, насколько важны типы данных? Какая цель? Скорость?

+0

Ты вопрос может применяться к типам данных в целом (не относится к базам данных), поскольку их основная цель - определить требования к хранению и разрешенные операции. http://en.wikipedia.org/wiki/Datatype – webbiedave

ответ

6

Типы данных чрезвычайно Важно - без них не существует способа убедиться, какие данные фактически хранятся в столбце. Например, VARCHAR (255) может быть любым - строковым, числовым, дата/время ... Из-за чего чрезвычайно сложно найти конкретные данные, если вы не можете гарантировать, что данные или какая-либо форма согласована.

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

Скорость извлечения данных также улучшена за счет использования индексов на , но индекс не может использоваться, если вам нужно изменить тип данных данных на что-то еще, прежде чем данные будут сравниваться.

Это хорошая вещь, чтобы понять, какая разница между данными и представлением. Как и в случае с форматированием поля даты - это презентация, о которой можно легко позаботиться, если тип данных DATETIME (или преобразован в DATETIME).

+0

Ребята и злоумышленники sqlite не согласны с вами в отношении важности статической, сильной типизации в базах данных, см., например, http://www.sqlite.org/different.html «Манифест печатать» ;-) – VolkerK

+0

@VolkerK: Да, я видел несколько вопросов SQLite, напоминающих «SQLite сохраняет его как текст, поэтому, как мне получить функциональность даты из этого ?! " =) –

2

Короткий ответ: скорость, оптимальное хранение данных, индекс, способность поиска.

Ваша база данных может лучше использовать внутренние работы, когда все имеет правильный тип данных. Вы также можете лучше использовать специальную функцию базы данных.

Если вы хотите получить все данные за определенный месяц. Вы можете использовать специальные функции базы данных, чтобы просто группировать их на месяц, например, используя тип данных даты. При использовании varchar для хранения даты вы теряете все эти функции.

Большинство баз данных могут быстрее или быстрее извлекать данные из таблицы, когда индекс был создан по типу данных INT. Поэтому, если вы создали это поле хранения в качестве varchar, вы потеряли бы производительность.

0

Производительность является одной из причин, но до сих пор не те говорили о запуске этих типов запросов (которые не были бы возможны, если все типы VARCHAR)

SELECT SUM(total) total FROM purchases WHERE status = 'PAID'; 
SELECT * FROM users WHERE DATE_ADD(last_login, INTERVAL 3 MONTH) < NOW(); 
+0

Я думаю, что оба «OMG Ponies» и я действительно упоминали об этом в наших объяснениях. –

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