Ptát se na tuto otázku o "MySQL" není užitečné, protože MySQL odsouvá úložiště na úložiště enginů a ty implementují úložiště velmi odlišnými způsoby. Tuto otázku má smysl položit každému jednotlivému úložišti.
V modulu MEMORY neexistují datové typy s proměnnou délkou. VARCHAR se tiše změní na CHAR. V kontextu vaší otázky:Nezáleží na tom, kam v definici tabulky zadáte svůj VARCHAR.
V enginu MyISAM, pokud tabulka nemá žádná data s proměnnou délkou (VARCHAR, VARBINARY nebo jakýkoli typ TEXT nebo BLOB), jedná se o FIXED variantu MyISAM, to znamená, že záznamy mají pevnou délku bajtů. To může mít dopad na výkon, zejména pokud jsou data mazána a vkládána opakovaně (tj. tabulka není pouze připojena). Jakmile je jakýkoli datový typ s proměnnou délkou součástí definice tabulky, stane se DYNAMICKOU variantou MyISAM a MyISAM interně změní jakýkoli kromě nejkratšího typu CHAR interně na VARCHAR. Opět, na poloze a dokonce i definici CHAR/VARCHAR nezáleží.
V enginu InnoDB jsou data uložena na stránkách o velikosti 16 KB. Stránka má zápatí stránky s kontrolním součtem a záhlaví stránky, mimo jiné také adresář stránky. Adresář stránek obsahuje pro každý řádek posun tohoto řádku vzhledem k začátku stránky. Stránka také obsahuje volné místo a všechny I/O se provádějí po stránkách.
InnoDB tedy může, pokud je na stránce volné místo, zvětšovat VARCHAR na místě a přesouvat řádky uvnitř stránky, aniž by došlo k dalším I/O. Vzhledem k tomu, že všechny řádky jsou adresovány jako (číslo stránky, záznam v adresáři stránek), je pohyb řádku uvnitř stránky lokalizován na stránku a není viditelný zvenčí.
To také znamená, že i pro InnoDB nezáleží na pořadí sloupců v řádku vůbec.
Toto jsou tři moduly úložiště, které se nejčastěji používají s MySQL, a pořadí sloupců u žádného z těchto tří nezáleží. Je možné, že existují jiné, exotičtější úložné motory, pro které to není pravda.