I’m about to add a new column to my table with 500,000 existing rows. Is there any harm in choosing a large value for the varchar? How exactly are varchars allocated for existing rows? Does it take up a lot of disk space? How about memory effects during run time?
I’m looking for MySQL specific behavior details not general software design advises.
There’s no harm in choosing a large value for a varchar field. Only the actual data will be stored, and MySQL doesn’t allocate the full specified length for each record. It stores the actual length of the data along with the field, so it doesn’t need to store any padding or allocate unused memory.