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 20
colonne.
Vedi questa voce nel mio blog per maggiori dettagli:
In Oracle
, le NULL
colonne finali non consumano spazio, ecco perché dovresti sempre metterle alla fine della tabella.
Anche dentro Oracle
e dentro SQL Server
, in caso di una riga grande, ROW CHAINING
può 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 CHAINING
in 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 @Andomar
la risposta di .
Ha risposto la stessa cosa, ma sembra essere sottovalutato senza motivo.