Cómo reordenar los campos de una tabla MySQL
La estructura de datos de cualquier aplicación es la parte más difícil de cambiar. Sin embargo, puesto que las nuevas necesidades surgen continuamente, añadir nuevas columnas a una base de datos MySQL existente es una tarea habitual.
Pero, ¿cómo reordenar las columnas de una tabla MySQL una vez que dichas nuevas columnas ya han sido creadas y añadidas a una tabla existente? Recolocar las columnas es una práctica recomendable para mantener visualmente juntos aquellos campos de la tabla MySQL que se encuentren fuertemente relacionados.
Normalmente prefiero realizar todas las tareas de gestión de bases de datos MySQL utilizando herramientas tales como phpMyAdmin. Sin embargo, no he encontrado ninguna opción de phpMyAdmin que permita cambiar el orden de las columnas existentes dentro de la estructura de la tabla.
Por suerte, sólo hay que ejecutar una instrucción MySQL muy fácil para especificar un nuevo orden de columnas:
MODIFY COLUMN `nombre_columna` tipo_datos
AFTER `otra_columna`
Sólo hay que reemplazar los campos siguientes por los datos reales de la tabla MySQL reordenada:
- nombre_tabla: el nombre de la tabla MySQL cuyo orden de campos modificar.
- nombre_columna: el nombre de la columna de la tabla MySQL que se desea recolocar.
- tipo_datos: el tipo de datos MySQL de la columna movida, como int, varchar(longitud), text, etc.
- otra_columna: el nombre de la columna que estará justo antes de la nueva posición de la columna reordenada.
Ejemplo de cómo reordenar columnas en una tabla MySQL
He aquí un ejemplo con una consulta MySQL real para cambiar el orden de las columnas de una tabla. Supongamos que se desea mover la columna llamada "user_password" para que se coloque justo detrás de la columna llamada "user_name" y mantener así agrupadas estas columnas estrechamente relacionadas:
MODIFY COLUMN `user_password` varchar(25)
AFTER `user_name`
Esto reordenará las columnas en la estructura actual de la tabla MySQL. No obstante, no alterará el orden de las filas (es decir, de los registros de datos actualmente almacenados en la tabla). Así pues, el orden de los datos contenidos en la base de datos no cambiará.
Es útil reordenar columnas de una tabla MySQL para mantener campos relacionados visualmente cerca y agrupados lógicamente. Sin embargo, recolocar la posición de las columnas en la estructura de la tabla apenas modificará las prestaciones o la velocidad de búsqueda en la base de datos MySQL.
Por otra parte, reordenar los datos almacenados (esto es, cambiar el orden de las filas o registros guardados en una tabla) es una tarea completamente distinta, la cual sí que puede optimizar (o impactar negativamente) en el rendimiento de las búsquedas en MySQL.