Является ли blob более эффективным, чем varchar для данных, которые могут иметь ЛЮБОЙ размер?

9

При настройке базы данных я хочу использовать наиболее эффективный тип данных для потенциально длинных данных. В настоящее время мой проект - хранить названия песен и мысли, относящиеся к этой песне. Некоторые названия могут быть 5 символов или длиннее 100 символов, и мысли могут длиться довольно долго.

Более эффективно использовать varchar, установленный на 8000, или использовать BLOB-объект? Использует ли BLOB-объект то же самое, что и VARCHAR, в том, что он имеет определенный размер, независимо от того, что он содержит? или это просто указатель и он не занимает много места на столе? Существует ли определенный размер установленного большого двоичного объекта в килобайтах или он расширяется?

BillyNair
источник

Ответы:

12

Я бы предложил использовать ТЕКСТ поверх BLOB.

Основная разница

  • TEXT и BLOB хранятся вне таблицы, а таблица содержит указатель на место фактического хранения.

  • VARCHAR хранится в соответствии с таблицей.

Основное руководство

  1. Текстовые сообщения почти всегда должны храниться в формате TEXT (в конечном итоге они будут произвольно длинными)

  2. Строковые атрибуты должны храниться как VARCHAR (имя пользователя, тема и т. Д.).


Чтобы выбрать, когда использовать VARCHAR, а когда использовать TEXT, подробно обсуждался вопрос переполнения стека в следующих потоках:

  1. MySQL: большой VARCHAR против текста?

  2. MySQL varchar (2000) против текста?

Для этого на форуме MySQL также есть ветка сравнения производительности .

Озаир Кафрай
источник
Спасибо за эти ссылки. Они ответили на некоторые вопросы, которые у меня были, и в итоге я использовал ТЕКСТ. Это было не совсем то, что я искал, поскольку физическое пространство, которое он занимает на сервере, но я предполагаю, что пока это будет небольшой проект, это не имеет значения. Позже, если я начну делать более крупные проекты, мне нужно будет это выяснить.
BillyNair
0

Я думаю, что вы должны использовать blob, только если у вас есть сериализованный сложный тип данных, то есть если вы хотите хранить в одной таблице сложный класс. Если вы хотите хранить только строку (или что-то подобное), не используйте blob.

m3th0dman
источник