Короткий ответ: TEXT
и BLOB
будут примерно одинаковой скорости.
Длинный ответ:
- В конечном итоге
TEXT
и BLOB
- это просто кучабайтов.Основная стоимость вставки / извлечения таких столбцов заключается в поиске строки и ее разборе.В некоторых ситуациях байты являются «не записанными», что требует дополнительного обращения к диску (если не кэшировано). - Существует некоторая разница в обработке ЦП.Но это относительно незначительно.При перемещении
TEXT
между столом и клиентом CHARACTER SET
может быть изменено ;это чего-то стоит.(Не применимо к BLOB
или любым %_bin
COLLATION
.) - Другая разница ЦП: Когда данные
INSERTing
, символы проверяются на достоверность.Это вызывает ошибки, если у вас есть байты, которые не соответствуют кодировке, указанной для клиента.
Обратите внимание, что различия говорят, что TEXT
может быть слегка медленнее, чем BLOB
.
Вот еще один метод ... Если у вас есть несколько текстовых полей средней величины, на самом деле быстрее, чем TEXT
или BLOB
, чтобы получить client COMPRESS
текст, затем сохраните его в столбце BLOB
.Причина, по которой это, скорее всего, будет быстрее, заключается в том, что вокруг должно быть передано меньше байтов.И кэш buffer_pool более эффективен.(Примечание: я не говорю о ROW_FORMAT=COMPRESSED
.)