What's the difference between VARCHAR(255) and TINYTEXT string types in MySQL?

You cannot assign a DEFAULT value to a TINYTEXT and you cannot create an unprefixed index on the latter.

Internally, additional objects are allocated in memory to handle TEXT (incl. TINYTEXT) columns which can cause memory fragmentation on the large recordsets.

Note that this only concerns the column's internal representation in the recordsets, not how they are stored on the disk.


Using VARCHAR you can set the column to NULL or NOT NULL and you can set DEFAULT value, but not with TEXT. Use VARCHAR if you need one or both feature, NULL and DEFAULT.