Использовать varchar или текст для динамического поля в MySQL? - PullRequest
7 голосов
/ 28 января 2011

Я строю таблицу, которая будет принимать различные значения в поле, представьте в таблице журнала, что поле «значение» может быть числом, крошечной строкой или большим текстом и т. Д. Поэтому мне было интересно, если я должен создать это поле «значение» как текст или создать два поля, одно для небольших входных данных, таких как дата, числа и некоторые строки, и другое только для входных данных текстов.

Итак, мой вопрос таков: Должно ли это поле «значение» быть Varchar вместе с некоторым другим «значением2» как Текст или создать одно поле Текст, которое mysql будет корректно обрабатывать?

Боюсь, что создание только одного текстового поля может ухудшить производительность.

РЕДАКТИРОВАТЬ: число, дата и т. Д. Будут переданы как строка перед вставкой, это не точка

Спасибо
Джо

Ответы [ 3 ]

4 голосов
/ 28 января 2011

Вы знаете, насколько большим будет самый большой вход?Если вы устанавливаете ограничение или знаете, насколько велик будет максимальный ввод, вы можете использовать varchar (который ограничен 255 символами в версиях <5.0.3 и 65 535 в версиях> = 5.0.3).В противном случае вам, вероятно, лучше работать с текстом, поскольку он содержит значительно больше (65 535 * 2 ^ 16-1).

В качестве альтернативы, если пользователи создают вещи, в которых уже есть таблицы (например, добавление событий)в календарь), вы можете просто поместить столбец «is_approved» в таблицу и отображать только утвержденные или выполнить поиск по всему, чтобы найти дубликаты.

http://dev.mysql.com/doc/refman/5.0/en/string-type-overview.html

1 голос
/ 28 января 2011

Если существует ограничение на длину сохраняемых данных, используйте varchar () (поскольку максимальная длина MySQL 5.0.3 varchar может составлять до 65 535)

Если конкретного ограничения нет, используйте тип поля text.

0 голосов
/ 28 января 2011

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

...