Í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

COMPARTIR EN FACEBOOK
COMPARTIR EN TWITTER
COMPARTIR EN LINKEDIN
COMPARTIR EN WHATSAPP