2010-01-18 4 views
1

Итак, я создавал таблицу для комментариев, и мне было интересно. Что было бы хорошим типом для комментариев? Я задал длинный текст. Ну, тогда зачем людям нужен varchar, если longtext сможет справиться с этим? Кроме того, какой тип я хотел бы использовать для имен пользователей?Вопросы о типах в MySQL

Какова цель «первичного» индекса? Какова цель индекса?

Обновление: Скажем, комментарий был фактически обзором.

ответ

2

Это правда, что TEXT может обрабатывать любой вход вы бы разместить в VARCHAR или поле CHAR. Фактически TEXT может обрабатывать данные и данные, которые вы, возможно, захотите поместить в DECIMAL, INT или почти любой другой тип. Следуя этой логике, мы могли бы также сделать каждый столбец тиком TEXT.

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

В отношении вопросов: столбец имени пользователя должен использовать VARCHAR (20), так как вам нужно и ожидать, что большинство имен пользователей будут короткими, как правило, длиной не более 10 - 20 символов. Для колонки обзора (например, обзора фильма или обзора книги) тип TEXT будет уместным, так как обзоры могут охватывать один абзац на несколько страниц.

В отношении индексов, попробуйте эту ссылку:

http://20bits.com/articles/interview-questions-database-indexes/

0

Это зависит от того, что такое «комментарий» в вашей системе. Обычно VARCHAR довольно стандартный для комментариев и имен пользователей. Это ограничивает вас примерно 255 символами, что в целом довольно приемлемо. Если вам нужно больше символов в комментариях, вы можете столкнуться с текстом, который даст вам чуть более 65 тыс. Символов.

Для получения дополнительной информации см. String Types Reference.

+0

Как узнать, какой тип позволяет использовать символы? Ну, почему возникла необходимость в varchar, когда longtext перекрывает его функцию? Я уверен, что есть много вещей в мире, которые функционируют таким образом, но я просто пытаюсь копать дальше, чтобы увидеть, есть ли какая-то особая причина, которую мне не хватает. – Strawberry

+0

Использование longtext для комментария или имени пользователя нравится, когда вы получаете базуку для борьбы с водой. – Sampson

0

TEXT NOT NULL. Это дает достаточно места, имеет 2 байта накладных расходов и обычно не представляет проблем.

Что касается TEXT

О сравнениях, TEXT пространство распространяется по размеру по сравнению объекта, точно как CHAR и VARCHAR.

Для индексов в столбцах BLOB и TEXT, необходимо указать префикс индекса длина. Для CHAR и VARCHAR длина префикса необязательна. См. Раздел 7.4.2, «Индексы столбцов».

Столбцы BLOB и TEXT не могут иметь Значения по умолчанию.

Если вы используете BINARY атрибут с типом данных TEXT столбец присваивается бинарная сортировка набора символов столбца .

Что касается VARCHAR:

Значения в столбцах VARCHAR являются строки переменной длины. Длина может быть указана как значение от 0 до 255 до MySQL 5.0.3 и от 0 до 65,535 в версиях 5.0.3 и более поздних версий. Эффективная максимальная длина VARCHAR в MySQL 5.0.3, а затем это при условии максимального размера строки (65535 байт, который является общим для всех столбцов ) и набор символов используется.

Больше на: http://dev.mysql.com/doc/refman/5.0/en/blob.html

0

взглянуть на эту web page, в нем перечислены все типы полей MySQL и описывает то, что они и как они отличаются друг от друга ,

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