I am just starting to investigate optimization for my MySQL database. From what I’m reading, indexing seems like a good idea – so I am wanting to create an index on one of my VARCHAR columns, on a table using the MyISAM engine.
From what I’m reading, I understand that an index is limited to a size of 1,000 bytes. A VARCHAR character is 3 bytes in size, though. Does that mean that if I want to index a VARCHAR column with 50 rows, I need an index prefix of 6 characters? (1,000 bytes / 50 rows / 3 bytes per character = 6.66)
If so, that seems a little comiplicated – which is why I’m questioning my understanding. It seems pretty odd that you would only be able to index 333 rows in a VARCHAR column, using a prefix of 1 character.
Am I missing something?
Index key length is limited to
1000bytes inMyISAM,767bytes inInnoDB(per column).This means that you cannot index a single
UTF8column more than333characters long in aMyISAMtable (when calculating the max index size,MySQLassumes3bytes per character, though actual length may be much smaller)You can create as many indexed records as you need.