Actualizar:
En MySQL, puede haber una razón para hacer esto.
Dado que los tipos de datos variables (como VARCHAR) se almacenan con longitudes variables en InnoDB, el motor de la base de datos debe recorrer todas las columnas anteriores en cada fila para averiguar el desplazamiento de la dada.
El impacto puede llegar al 17% para las 20columnas.
Vea esta entrada en mi blog para más detalles:
En Oracle, las NULLcolumnas finales no consumen espacio, por eso siempre debe ponerlas al final de la tabla.
También en Oracley en SQL Server, en caso de una fila grande, ROW CHAININGpuede ocurrir un.
ROW CHANING es dividir una fila que no encaja en un bloque y extenderla por varios bloques, conectados con una lista vinculada.
La lectura de las columnas finales que no encajan en el primer bloque requerirá recorrer la lista vinculada, lo que resultará en una I/Ooperación adicional .
Consulte esta página para ver una ilustración de ROW CHAININGen Oracle:
Es por eso que debe colocar las columnas que usa a menudo al principio de la tabla y las columnas que no usa a menudo, o las columnas que tienden a serlo NULL, al final de la tabla.
Nota IMPORTANTE:
Si le gusta esta respuesta y desea votar a favor, vote también a favor de @Andomarla respuesta .
Él respondió lo mismo, pero parece haber sido rechazado sin ningún motivo.