Categorías destacadas
programacion php    
Artículo
4
¡votar!

 Índices y optimización de consultas


Procesamiento 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.

Publicado por:
chonchoi de tu madre
Recomendar
a un amigo
Compartir
en redes
 
Comentarios
 
BBDD
Entornos de desarrollo
Entretenimiento
Herramientas
Internet
Lenguajes de script
Lenguajes imperativos
Lenguajes orientados a objeto
Otros lenguajes
Plataformas
Teoría
Varios
Copyright © 1998-2011 Programación en Castellano. Todos los derechos reservados
Datos legales | Politica de privacidad | Contacte con nosotros | Publicidad

Diseño web y desarrollo web. Un proyecto de los hermanos Carrero.

Red internet:
Juegos gratis | Servidores dedicados
Más internet: Password | Directorio de weblogs | Favicon