Modelado físico relacional de bases de datos

Comando EXPLAIN en SQL

El comando EXPLAIN se utiliza para obtener información sobre cómo se ejecutará una consulta. Es útil para optimizar consultas, ya que muestra cómo el motor de la base de datos planea acceder a los datos. Este comando ayuda a entender el rendimiento de la consulta y encontrar posibles cuellos de botella.

¿Por qué usar EXPLAIN?

EXPLAIN es útil para:

  • Optimizar el rendimiento de consultas complejas.
  • Ver el plan de ejecución que sigue el motor de base de datos.
  • Detectar problemas como el uso de índices, escaneos completos de tablas, etc.

Sintaxis del Comando EXPLAIN

La sintaxis básica de EXPLAIN es anteponer la palabra EXPLAIN antes de una consulta SELECT, UPDATE, DELETE o INSERT.

Sintaxis básica:

1EXPLAIN SELECT * FROM tabla WHERE columna = 'valor';

Ejemplo: Imaginemos que tienes una tabla llamada empleados con las columnas id, nombre, departamento, y salario. Si quieres saber cómo se ejecutará una consulta que obtiene todos los empleados con salario mayor a 3000, puedes usar EXPLAIN:

1EXPLAIN SELECT * FROM empleados WHERE salario > 3000;
2--Puedes usar también:
3EXPLAIN FORMAT=JSON SELECT * FROM empleados WHERE salario > 3000;

Salida esperada (dependiendo del sistema de bases de datos):

idselect_typetabletypepossible_keyskeykey_lenrefrowsExtra
1SIMPLEempleadosrangesalario_indexsalario_index4NULL5Using where

Explicación de las columnas:

  • id: Identificador de la consulta o subconsulta.
  • select_type: Tipo de la consulta (por ejemplo, SIMPLE significa que no hay subconsultas).
  • table: Tabla que se está utilizando.
  • type: Método de acceso a la tabla (por ejemplo, range indica que se está usando un rango de valores).
  • possible_keys: Los índices que podrían haberse utilizado.
  • key: El índice que realmente se utilizó.
  • key_len: La longitud del índice utilizado.
  • ref: Las columnas o constantes utilizadas para la comparación.
  • rows: El número estimado de filas que se devolverán.
  • Extra: Información adicional sobre el procesamiento de la consulta (por ejemplo, Using where indica que se está aplicando una condición WHERE).

Comando DESCRIBE o SHOW COLUMNS

El comando DESCRIBE (o SHOW COLUMNS) se utiliza para mostrar la estructura de una tabla, es decir, las columnas, sus tipos de datos, si permiten valores nulos, si tienen claves primarias, entre otras características.

¿Por qué usar DESCRIBE?

  • Para ver la estructura de una tabla rápidamente.
  • Para entender los tipos de datos de las columnas y sus restricciones.
  • Para comprobar si las tablas tienen índices o claves primarias.

Sintaxis de DESCRIBE o SHOW COLUMNS

La sintaxis básica de DESCRIBE o SHOW COLUMNS es muy similar y ambas muestran la misma información.

Sintaxis básica:

1DESCRIBE nombre_tabla;
1SHOW COLUMNS FROM nombre_tabla;

Ejemplo: Supón que tienes una tabla llamada empleados y quieres ver su estructura:

1DESCRIBE empleados;

Salida esperada:

FieldTypeNullKeyDefaultExtra
idINTNOPRINULLauto_increment
nombreVARCHAR(50)NONULL
departamentoVARCHAR(50)YESNULL
salarioDECIMAL(10,2)YESNULL

Explicación de las columnas:

  • Field: El nombre de la columna.
  • Type: El tipo de dato de la columna (por ejemplo, INT, VARCHAR).
  • Null: Indica si la columna permite valores nulos (YES o NO).
  • Key: Si la columna es parte de una clave primaria (PRI), índice único (UNI), etc.
  • Default: El valor predeterminado de la columna (si lo tiene).
  • Extra: Información adicional, como si la columna tiene un auto incremento (auto_increment).

Diferencias entre EXPLAIN y DESCRIBE

  • EXPLAIN te muestra cómo se ejecutará una consulta y te ayuda a analizar su rendimiento.
  • DESCRIBE o SHOW COLUMNS te muestra la estructura de una tabla, como los tipos de columnas, restricciones y si tienen índices o claves primarias.

Ejemplo Completo de Uso de Ambos Comandos

Supón que tienes una consulta y quieres analizar su rendimiento y también conocer la estructura de la tabla involucrada.

Consulta SQL:

1SELECT nombre, salario FROM empleados WHERE departamento = 'Ventas';
  1. Usando EXPLAIN para ver el plan de ejecución:
1EXPLAIN SELECT nombre, salario FROM empleados WHERE departamento = 'Ventas';
2-- O
3EXPLAIN FORMAT=JSON SELECT nombre, salario FROM empleados WHERE departamento = 'Ventas';
  1. Usando DESCRIBE para ver la estructura de la tabla empleados:
1DESCRIBE empleados;

Esto te dará tanto el plan de ejecución como una visión general de la estructura de la tabla, ayudándote a entender cómo optimizar tu consulta y cómo está diseñada la tabla.


Conclusión

  • EXPLAIN es una herramienta esencial para entender el rendimiento de las consultas y optimizarlas.
  • DESCRIBE o SHOW COLUMNS es útil para obtener rápidamente la estructura de una tabla y asegurarte de que comprendes bien los datos con los que estás trabajando.
  • Loading...