Блог веб-разработчика: в помощь программистам

Разница между CHAR, VARCHAR и TEXT

MySQL предоставляет 3 типа данных для хранения текстовой информации: CHAR, VARCHAR и TEXT.

С каким же из них проще всего работать и какой тип данных обеспечивает более быструю работу?

Отличия в скорости работы между этими тремя MySQL типами данных будет очень тяжело выявить, до тех пор пока ваша база данных не разрастётся до довольно больших объёмов.

Данные типа CHAR, которые имеют фиксированную длину, быстрее всего сохраняют и достают информацию но могут потреблять излишнее дисковое пространство.

VARCHAR
, строка изменяющейся длины, работает медленнее чем CHAR но не потребляют излишнее дисковое пространство.

Тип TEXT переменная типа BLOB – он занимает больше места и I/O чем предыдущие 2 типа.

Использование типа CHAR для текстовых данных технически самый быстродействующий способ, но данные типа CHAR имеют ограничение длинны в 255 символов. Последняя версия СУБД MySQL позволяет хранить в переменной типа VARCHAR данные длиной вплоть до 65,535 символов, это максимальная длинна этого типа данных.

Тип TEXT более привлекательный с первого взляда, потому что в отличии от типа VARCHAR, в нём можно хранить множественные TEXT элементы в одной ячейке. Для того что бы включить полнотекстовое индексирование данных типа text, необходимо что бы тип таблицы был MyISAM так как он не обращает внимания на то какой тип данных

  • А тесты по производельности varchar и char есть?

  • а я всегда выбираю тип “text” вдруг проблемы будут

  • varchar быстрее text на 190%

    forums mysql com read.php?24,105964

  • TEXT имеет длину в байтах, а CHAR и VARCHAR – в символах. Вот ещё одно основное и очень важное отличие. Если, например, в поле TINYTEXT, имеющее макс. длину 255 байт, пытаться поместить строку в кодировке UTF-8, содержащую 255 русских символа, то получится ошибка, т. к. символ кириллицы в UTF-8 занимает 2 байта. А вот если засовывать её в VARCHAR(255), то всё OK.

  • Также нельзя сделать поле типа TEXT,уникальным (чтобы MySQL сам контролировал его уникальность), а CHAR и VARCHAR можно

    • Я предпочитаю warchar по той причине, что его можно ограничить. Пользователь не сможет записать в базу большее количество символов чем указано в поле. С типом TEXT могут возникнуть сложности (вплоть до падения базы) в случаи записи больших объемов данных, которые по какой-то причине были не проконтролированы программно.
      Хотя я могу быть в чем-то не прав…

You can follow any responses to this entry through the RSS 2.0 feed.