Saiyine
Punto Com

Optimizar querys en MySQL con Explain

2008-11-15 05:23:53

Esta es una pequeña chuletilla que quiero compartir con mi lectorado de como acelerar consultas en MySQL aprendiendo a usar la orden Explain.

Por ejemplo, digamos que tenemos querys similares a SELECT * FROM comentarios WHERE idcom = 875; y queremos hacer que vayan lo más rápidas posible... Naturalmente, en este caso seria bastante simple, tranquilos que es solo un ejemplo.

Ejecutamos EXPLAIN SELECT * FROM comentarios WHERE idcom = 875; y obtenemos:

+----------+------+---------------+------+---------+------+------+------------+
| table       | type | possible_keys | key | key_len | ref | rows | Extra |
+----------+------+---------------+------+---------+------+------+------------+
| comentarios | ALL | NULL | NULL | NULL | NULL | 2 | where used |
+----------+------+---------------+------+---------+------+------+------------+

¿Que quieren decir estos datos?

Table nos dice que tablas se ha usado en la busqueda (con una entrada por cada tabla, por ejemplo, en los join).

Type es importante, nos dice que tipo de join hemos usado. De mejor a peor, system, const, eq_ref, ref, range, index, all. Si tenemos all, significa que recorremos toda la tabla. ¡Muy malo!

Possible_keys. ¿Que indices podriamos haber usado en la query?

key. Y cual hemos usado de verdad.

key_len: la longitud de la clave, a mas corta, mejor.

ref: que columna se ha usado para buscar.

rows Numero de columnas ha tenido que examinar para obtener la información. Número fundamental a minimizar.

extra, Información extra ¡Si aqui vemos "using temporary" ó "using filesort" es que vamos muy mal!

Rollos antiguos

2008-11-15 05:04:59 - Online casino.

2008-10-15 12:51:35 - Que bonita, la paloma de la paz.

2008-09-27 06:15:08 - Dreamhost invitations.

2008-09-11 10:50:01 - Imagenes de la pelicula de Dragon Ball.

2008-08-19 02:46:58 - Como hacer un beep de windows en Java.

Saiyine

Selfie of meHi! Welcome to Saiyine Punto Com where I talk about anything that goes through my mind!

Puedo prometer y prometo que a la mayor brevedad aquí irá un menú o algo asín.