Насколько я знаю, BLOB (и TEXT) на самом деле хранятся вне таблицы, VARCHAR хранятся в таблице.
VARCHAR плохо влияют на производительность чтения, поскольку каждая запись может иметь переменную длину и чтоделает поиск полей в записи более затратным.BLOB работают медленно, потому что значение нужно извлекать отдельно, и, скорее всего, потребуется еще одно чтение с диска или из кэша.
Насколько мне известно, InnoDB не делает ничего другого в этом отношении, поэтому я бы предположил, что характеристики производительностиhold.
Я не думаю, что перемещение значений BLOB действительно помогает, кроме уменьшения общего размера таблицы, что в любом случае оказывает положительное влияние на производительность.VARCHARы - это отдельная история.Вы обязательно выиграете здесь.Если все ваши столбцы имеют определенную длину (и я предполагаю, что это означает, что вы также не можете использовать BLOB-объекты?), Поиск полей будет быстрее.
Если вы просто «читаете» поля VARHCAR и BLOB, ясказал бы, что стоит попробовать.Но если ваш запрос на выборку требует сравнения значения из VARCHAR или BLOB, вы довольно кислы.
Так что да, вы определенно можете повысить производительность здесь, но убедитесь, что вы проверяете, действительно ли вы получаете производительность, и чтоувеличение стоит агрессивной денормализации.
PS.
Другой способ «оптимизации» производительности чтения VARCHAR - просто заменить их полями CHAR (фиксированной длины).Это может повысить производительность чтения, если допустимо увеличение дискового пространства.