varchar (255) против tinytext / tinyblob и varchar (65535) против blob / text

92

По определению:

VARCHAR: диапазон длины от 1 до 255 символов. Значения VARCHAR сортируются и сравниваются без учета регистра, если не указано ключевое слово BINARY. x + 1 байт
TINYBLOB, TINYTEXT: столбец BLOB или TEXT с максимальной длиной 255 (2 ^ 8-1) символов x + 1 байт

Исходя из этого, я создаю следующую таблицу:

CREATE TABLE `user` (
  `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
  `name` varchar(255),
  `lastname` tinytext,
  PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1

Или лучше создать varchar или tinytext и почему ?

То же самое для:

VARCHAR: диапазон длины> 255 символов. Значения VARCHAR сортируются и сравниваются без учета регистра, если не указано ключевое слово BINARY. x + 2 байта
столбец BLOB, TEXT A BLOB или TEXT с максимальной длиной 65535 (2 ^ 16-1) символов x + 2 байта

Tech4Wilco
источник
VARCHAR требует меньше накладных расходов на память, но обычно они полностью читаются в памяти, поэтому в конце VARCHAR может использовать больше памяти. Они оба разные. Вы используете BLOB для хранения двоичных данных, таких как изображение, аудио и другие мультимедийные данные. и VARCHAR для хранения текста любого размера до предела.
Книга Зевса

Ответы:

10

В этом случае varcharлучше.

Обратите внимание, что varcharможет быть от 1 до 65535 символов.

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

Большие двоичные объекты сохраняются в отдельном разделе файла.
Для включения в данные им требуется дополнительный файл для чтения.
По этой причине varchar выбирается намного быстрее.

Если у вас есть большой двоичный объект, к которому вы обращаетесь нечасто, то лучше использовать большой двоичный объект.
Хранение данных большого двоичного объекта в отдельном файле (части файла) позволяет уменьшить размер файла основных данных и, следовательно, получать его быстрее.

Йохан
источник
Лучше это или нет, зависит от ваших шаблонов доступа к данным.
Майкл Миор,
1
Какой это может быть отдельный файл?
glglgl
1
Большие двоичные объекты не сохраняются в отдельном файле. Но они хранятся в отдельном физическом месте от остальных столбцов.
Майкл Миор,
1
Обратите внимание, что это зависит не только от частоты доступа, но и от того, какие операции выполняются с данными. Например, любой запрос, требующий сканирования таблицы (что, как правило, плохо), но не столбца текста, будет ухудшаться из-за большего объема отсканированных данных.
Майкл Миор,
1
Я также подозреваю, что сортировки файлов, не использующие этот столбец, могут быть более эффективными, если данные хранятся вне страницы, хотя я не уверен, что оптимизатор запросов достаточно умен, чтобы не извлекать эти данные.
Майкл Миор,