My inclination when creating tables is to create columns using varchar-sizes in increments of 10 or 5 but I suspect there must be more-efficient sizes, specifically, values like 16, 32, 64 minus header-bits.
- Is this true? Does it really have much impact on storage? - How many bits are the headers? - How does TOAST factor in?
Believe it or not, specifying the varchar size has no impact on storage size. So, a varchar and a varchar(2) if both have two characters take the same storage space.
Toast is described pretty well in the documentation (better than I can describe it).