För att svara på frågan, på disk använder MySql 1 + storleken som används i fältet för att lagra data (så om kolumnen deklarerades varchar(45), och fältet var "FooBar" skulle den använda 7 byte på disk, såvida du inte använder en multibyte-teckenuppsättning, där den skulle använda 14 byte). Så, hur du än deklarerar dina kolumner, kommer det inte att göra någon skillnad i lagringsändan (du sa att du är orolig för diskoptimering för en massiv tabell). Det gör dock skillnad i frågor, eftersom VARCHAR konverteras till CHAR när MySql gör en temporär tabell (SORT, ORDER, etc) och ju fler poster du får plats på en enda sida, desto mindre minne och snabbare kommer dina tabellskanningar vara.