VARCHAR се съхранява в съответствие с таблицата. VARCHAR е по-бърз, когато размерът е разумен, чийто компромис ще бъде по-бърз, зависи от вашите данни и хардуер, бихте искали да сравните сценарий от реалния свят с вашите данни.
Ефективният максимален брой байтове, които могат да бъдат съхранени в VARCHAR или VARBINARY колоната е обект на максималния размер на реда от 65,535 bytes , което се споделя между всички колони.
Например VARCHAR(255) колоната може да съдържа низ с максимална дължина от 255 знака. Ако приемем, че колоната използва набора от символи latin1 (един байт на знак), действителното необходимо съхранение е дължината на низа (L), плюс един байт за запис на дължината на низа. За низа 'abcd' , L е 4 и изискването за съхранение е пет байта. Ако вместо това същата колона е декларирана да използва ucs2 двубайтов набор от знаци, изискването за съхранение е 10 байта:Дължината на 'abcd' е осем байта и колоната изисква два байта за съхраняване на дължини, тъй като максималната дължина е по-голяма от 255 (до 510 bytes ).
За по-големи данни помислете за използването на TEXT или BLOB . TEXT и BLOB колоните се реализират по различен начин в NDB устройство за съхранение, при което всеки ред в TEXT колоната се състои от две отделни части. Един от тях е с фиксиран размер (256 bytes) , и всъщност се съхранява в оригиналната таблица. Другият се състои от всякакви данни над 256 bytes , който се съхранява в скрита таблица. Редовете в тази втора таблица винаги са 2,000 bytes дълго. Това означава, че размерът на TEXT колоната е 256 ако size <= 256 (където размерът представлява размера на реда); в противен случай размерът е 256 + size + (2000 – (size – 256) % 2000) .
https://dev.mysql.com/doc/refman /5.6/bg/storage-requirements.html
Зависи от връзката ви с базата данни, ако рядко използвате тези полета в заявката. Например за допълнителна информация. Създаване на отделна таблица е добра опция (нормализиране).
БЕЛЕЖКИ: VARCHAR е различно с CHAR . Ако създадете VARCHAR(250) и вмъкнете само 20 символи върху него, то ще отнеме 5 bytes + L различно с CHAR(250) , ще отнеме 250 bytes + L за същото състояние.