Zadawanie tego pytania o „MySQL” nie jest pomocne, ponieważ MySQL przenosi pamięć masową do silników pamięci masowej, które implementują pamięć masową na bardzo różne sposoby. Warto zadać to pytanie dla dowolnego silnika pamięci masowej.
W silniku MEMORY typy danych o zmiennej długości nie istnieją. VARCHAR jest po cichu zmieniany w CHAR. W kontekście twojego pytania:nie ma znaczenia, gdzie w definicji tabeli umieścisz swój VARCHAR.
W silniku MyISAM, jeśli tabela nie zawiera żadnych danych o zmiennej długości (VARCHAR, VARBINARY lub dowolny typ TEXT lub BLOB), jest to FIXED wariant MyISAM, to znaczy rekordy mają stałą długość w bajtach. Może to mieć wpływ na wydajność, zwłaszcza jeśli dane są wielokrotnie usuwane i wstawiane (tj. tabela nie jest tylko dołączana). Gdy tylko dowolny typ danych o zmiennej długości jest częścią definicji tabeli, staje się on DYNAMICM wariantem MyISAM, a MyISAM wewnętrznie zmienia dowolny typ CHAR poza najkrótszym na VARCHAR. Ponownie, pozycja, a nawet definicja CHAR/VARCHAR nie ma znaczenia.
W silniku InnoDB dane przechowywane są na stronach o rozmiarze 16 KB. Strona ma stopkę z sumą kontrolną oraz nagłówek strony z m.in. katalogiem stron. Katalog strony zawiera dla każdego wiersza przesunięcie tego wiersza względem początku strony. Strona zawiera również wolne miejsce, a wszystkie operacje we/wy są wykonywane na stronach.
W związku z tym InnoDB może, o ile na stronie jest wolne miejsce, powiększać VARCHAR w miejscu i przenosić wiersze wewnątrz strony, bez ponoszenia dodatkowych operacji we/wy. Ponadto, ponieważ wszystkie wiersze są adresowane jako (numer strony, wpis katalogu strony), ruch wiersza wewnątrz strony jest zlokalizowany na stronie i niewidoczny z zewnątrz.
Oznacza to również, że również w przypadku InnoDB kolejność kolumn w wierszu nie ma żadnego znaczenia.
Są to trzy silniki przechowywania, które są najczęściej używane w MySQL, a kolejność kolumn nie ma znaczenia dla żadnego z tych trzech. Możliwe, że istnieją inne, bardziej egzotyczne silniki pamięci masowej, w przypadku których nie jest to prawdą.