Utilidad y uso de EXPLAIN en MySQL

logo_mysql

A la hora de realizar una buena optimización de las consultas de MySQL habrá que prestar mucha atención a lo que dice la cláusula EXPLAIN. Su sintaxis es muy sencilla, basta anteponerlo a la consulta que queremos realizar para obtener toda la información.

EXPLAIN SELECT columna1, columna2 FROM tabla1 WHERE columna3 = ‘2’\G

El resultado que obtendremos será el plan de ejecución de la consulta a la base de datos. Una explicación de como accederá MySQL a las diferentes columnas involucradas en la consulta. EXPLAIN devolverá:

  • id: Es el identificador que EXPLAIN asignará a la consulta.
  • select_type: Tipo de consulta a analizar. Por ejemplo, si se trata de una consulta sencilla su valor será SIMPLE.
  • table: Nombre de la tabla a la que hacen referencia el resto de datos en la fila. Hay que tener en cuenta que el orden de las filas será el que utilizará MySQL para acceder a los datos.
  • type: Indica como MySQL combinará los datos de esa tabla.
  • possible_keys: Lista de los indices que se podrían utilizar, aunque podría no usarse ninguno.
  • key: Índice que finalmente se usará, si no se usa ninguno el valor del campo será NULL.
  • key_len: Tamaño del indice utilizado, si no se usó ninguno contendrá NULL.
  • ref: Muestra con que campo está relacionado el índice seleccionado.
  • rows: Número de registros que se tendrán que recuperar para ejecutar la consulta.
  • extra: Información adicional sobre la forma en que se obtendrán los datos.

Con esta información es posible encontrar donde se producen los cuellos de botella en las consultas que realizamos a la base de datos, y nos permitirá optimizarlas para evitar que una consulta lenta provoque un retraso injustificado en la devolución de resultados a los usuarios. En el manual de MySQL puedes encontrar más información.

La caida de los servidores

A través de un artículo de Emilio me entero de que uno de los grandes proveedores de hosting de USA ha dejado sin servicio a sus clientes durante 48 horas. El caso es que este proveedor ofrecía a sus clientes el housing de sus máquinas con un fuerte pago inicial que luego rebajaba el precio de las cuotas mensuales. Algunos webmasters han solicitado que se les devolviesen las máquinas, puesto que las pagaron al comenzar a trabajar con el proveedor. Pero la respuesta recibida fue que en realidad las máquinas estaban en leasing. Alucinante lo que llegan a hacer algunos para tener clientes.

A la ya de por sí desgracia importante de tener una web caida, con lo que supone a nivel de usuarios e ingresos, se el une otra, si alguno de los robots que rastran las páginas te pilla offline te va a penalizar en los resultados de búsqueda. Esto supone una pérdida aún mayor que la propia consecuencia de perdida momentanea de ingresos. Y es que todo el trabajo de posicionamiento que pudiesen realizar hasta la fecha se puede ver seriamente afectado. Y no están los tiempos como para tirar por la borda meses de trabajo.

A los afectados, me temo que no les quedará otro remedio que buscarse otro proveedor que les de alojamiento y realizar migraciones y backup (espero que todos tubiesen sus backups a salvo, nunca sabes lo importantes que son hasta que los necesitas) para volver a estar online. Lo llamantivo del caso es que muchos de esos webmasters comenzaron a recibir ofertas de servidores, hosting y housing, para tener de nuevo cobijo, nada más empezaron a circular los rumores de la caida de este proveedor.