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.

Google y Microsoft a por Digg

El popular sitio de publicación y votacion de noticias Digg, ya tiene dos pretendientes Google y Microsoft. Ultimamente estas dos empresas están enfrentadas cada poco tiempo por hacerse con alguna empresa puntera en Internet. Su ultimo enfrentamiento ha sido por la pretensión de Microsoft de hacerse con Yahoo, un plan totalmente descartado desde la propia Yahoo.

Google y Microsoft representan dos polos opuestos, por un lado Microsoft representa la empresa tradicional de informatica y relacionada con el software propietario. En la otra banda Google, lider en Internet y apostando por el software libre. Ambas empresas existen por lo mismo, ganar dinero, pero ambas tienen filosofias completamente distintas.

Estas batallas que venimos protagonizando desde hace un tiempo, culminarán con una posición dominante de una de las dos empresas en el mercado informatico. Mientras Microsoft avanza hacia la red, Google lo hace en la dirección opuesta, Donde será el enfrentamiento definitivo?