I understand the differences between CHAR and VARCHAR, one being fixed-length and the other variable-length, and that if all fields in a row are fixed-length, a table will generally perform better.
However, something that is unclear to me is that if I give VARCHAR a length, such as VARCHAR(500), does this retain the row as fixed-length?
For context, I have clean table with 50 columns, mostly TINYINTs, but I need two columns in this table as VARCHAR, as they will need store up to 500 characters each. The exact length is subject to user input and therefore unknown.
As an additional qualification, I don't really want to put these VARCHAR fields into a separate referenced table as it produces unnecessary joins and doesn't fit the expected query patterns very efficiently.
Any help would be appreciated. Thanks.