Índices y optimización de consultas

Las reglas que usa MySQL para decidir como obtener los datos de una consulta pueden llegar a ser difíciles de entender si dichas consultas son algo complejas. Afortunadamente hay unas pocas reglas y un comando que nos permiten tener un mejor entendimiento de qué es lo que está haciendo MySQL. Primero vamos a comentar las reglas:

  • MySQL no usará un índice si decide que será mucho más rápido escanear completamente una tabla. En general, si un índice le hace saber a MySQL que accesará apróximadamente el 30 por ciento de las filas de una tabla, MySQL abandona el índice y simplemente ejecuta un escaneo completo de la tabla.
  • Si múltiples índices pueden ser usados para satisfacer una consulta, MySQL usará el que sea más restrictivo -- esto es, con el que se obtengan el menor número de filas.
  • Si las columnas que estamos seleccionando forman parte de un índice, MySQL puede leer todos los datos que necesitamos desde el índice y nunca tocar la tabla en sí.
  • Cuando usamos varias tablas en una consulta, MySQL leerá primero los datos desde la tabla que regrese el menor número de filas. El orden en el que se especifican las tablas puede no ser el mismo que use MySQL. Esto afecta también el orden en el que son regresados finalmente los registros, así que debemos asegurarnos de usar una cláusula ORDER BY si necesitamos que los registros tengan un orden en particular.

Habiendo dicho esto, es importante tener en cuenta que algunas de las desiciones que toma MySQL están basadas en suposiciones, y al igual que nosotros los humanos que hacemos muchas suposiciones, puede que MySQL ocasionalmente haga alguna que sea incorrecta.

Si sospechamos que esto ha sucedido, o simplemente queremos entender qué es lo que está haciendo MySQL para procesar una consulta, podemos usar el comando EXPLAIN. La sección a continuación explica más a detalle el uso de EXPLAIN.

COMPARTE ESTE ARTÍCULO

ENVIAR A UN AMIGO
COMPARTIR EN FACEBOOK
COMPARTIR EN TWITTER
COMPARTIR EN GOOGLE +
¡SÉ EL PRIMERO EN COMENTAR!
Conéctate o Regístrate para dejar tu comentario.