Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Introducción
Es bastante común que en nuestras aplicaciones haya alguna sección de
informes, históricos, búsquedas generales… en la que se acaben
consultando una gran cantidad de registros provenientes de varias tablas a
la vez. Si estas tablas son grandes (varias centenas de miles de registros, o
incluso millones), la optimización de las consultas pesadas supondrá la
diferencia entre tener una aplicación fluida o tener una aplicación
inmanejable.
Para los ejemplos de este tutorial hemos empleado una base de datos de
testing. Se trata de una base de datos con unos 30 registros de empleados
y alrededor de 100 registros de salarios. La estructura de las tablas es la
siguiente:
Antes de empezar a cambiar nada, lo primero que recomendamos es
ejecutar el comando EXPLAIN sobre esa consulta. De esta manera podemos
saber qué pasos sigue el gestor de la base de datos para realizarla, y de
qué manera accede a las tablas en cada uno de ellos. Con esto podremos
identificar posibles cuellos de botella.
Del resultado de este comando, en lo que más nos vamos a fijar en este
tutorial es:
Hay que procurar que todas las columnas presentes en el GROUP BY formen
parte del mismo índice de la tabla que se está consultando, en el mismo orden
que en la consulta. Si la consulta es muy importante en nuestra aplicación,
podemos valorar la posibilidad de definir un índice para optimizarla.
Elegiríamos primero la columna/s filtrada en el WHERE, y después aquellas
presentes en el GROUP BY.
Con los LEFT JOIN no ocurre este problema, pues en este caso la tabla de la
izquierda SIEMPRE se leerá antes que su tabla dependiente.
Hablemos un poco sobre los Procedimientos de Almacenado PA.
Bien, una vez visto eso, el siguiente comando que veremos será el
DELIMETER, se refiere a escribir un delimitador para nuestras consultas
SQL, este delimitador se debe específicar cuando vamos a tener varias
consultas dentro de nuestro PA para decirle a MySQL que todo lo que este
dentro de ese delimitador formará parte de ese PA, tu puedes elegir
cualquier delimitador, pero entre los más comunes están:
DELIMETER //
O bien:
DELIMETER $$
$$
COMANDO BACKUP
REVOKE
Quita un permiso concedido o denegado previamente.
Sin taxis