Aggiornare:
In MySQL, ci può essere un motivo per farlo.
Poiché i tipi di dati variabili (come VARCHAR) sono memorizzati con lunghezze variabili in InnoDB, il motore di database dovrebbe attraversare tutte le colonne precedenti in ogni riga per scoprire l'offset di quella data.
L'impatto può raggiungere il 17% per le 20colonne.
Vedi questa voce nel mio blog per maggiori dettagli:
In Oracle, le NULLcolonne finali non consumano spazio, ecco perché dovresti sempre metterle alla fine della tabella.
Anche dentro Oraclee dentro SQL Server, in caso di una riga grande, ROW CHAININGpuò verificarsi un errore.
ROW CHANING sta dividendo una riga che non si adatta a un blocco e si estende su più blocchi, collegati a un elenco collegato.
La lettura delle colonne finali che non si adattavano al primo blocco richiederà l'attraversamento dell'elenco collegato, il che comporterà un'operazione extra I/O.
Vedere questa pagina per l'illustrazione di ROW CHAININGin Oracle:
Ecco perché dovresti mettere le colonne che usi spesso all'inizio della tabella e le colonne che non usi spesso, o le colonne che tendono ad essere NULL, alla fine della tabella.
Nota importante:
Se ti piace questa risposta e vuoi votarla, vota anche per @Andomarla risposta di .
Ha risposto la stessa cosa, ma sembra essere sottovalutato senza motivo.