The TEXT and VARCHAR
definitions in many db schemas are based on old information –
that is, they appear to be presuming restrictions and
behaviour from MySQL versions long ago. This has consequences for
performance. To us, use of for
instance VARCHAR(255) is a key indicator
for this. Yep, an anti-pattern.
VARCHAR
In MySQL 4.0, VARCHAR used to be restricted to 255 max. In MySQL
4.1 character sets such as UTF8 were introduced and MySQL 5.1
supports VARCHARs up to 64K-1 in byte length. Thus, any
occurrence of VARCHAR(255) indicates some old
style logic that needs to be reviewed.
Why not just set the maximum length possible? Well…
A VARCHAR is subject to the character set it’s in, for UTF8 this
means either 3 or 4 (utf8mb4) bytes per character can be used. So
if one specifies VARCHAR(50) CHARSET utf8mb4, …
[Read more]