MySQL utiliza un optimizador basado en costos para determinar la mejor manera de resolver una consulta. En muchos casos, MySQL puede calcular el mejor plan de consulta posible, pero a veces MySQL no tiene suficiente información sobre los datos a mano y tiene que hacer suposiciones “educadas” sobre los datos.
Em ñps casps em qie MySQL no hace lo "adecuado", las herramientas que usted tiene disponible para ayudar a MySQL son:
          Utilice la sentencia EXPLAIN para obtener
          información sobre como MySQL procesa una consulta. Para
          utilizarlo, simplemente añada la palabra clave
          EXPLAIN al inicio de su sentencia
          SELECT:
        
mysql> EXPLAIN SELECT * FROM t1, t2 WHERE t1.i = t2.i;
          EXPLAIN está explicado con más detalle en
          Sección 7.2.1, “Sintaxis de EXPLAIN (Obtener información acerca de
        un SELECT)”.
        
          Utilice ANALYZE TABLE
           para
          actualizar las definiciones de claves de la tabla analizada.
          Consulte Sección 13.5.2.1, “Sintaxis de nombre_de_tablaANALYZE TABLE”.
        
          Utilice FORCE INDEX sobre la tabla
          analizada para decirle a MySQL que los escaneos de tabla son
          muy costosos comparado con utilizar el índice dado. Consulte
          Sección 13.2.7, “Sintaxis de SELECT”.
        
SELECT * FROM t1, t2 FORCE INDEX (index_for_column) WHERE t1.col_name=t2.col_name;
          USE INDEX y IGNORE INDEX
          podrían también ser útiles.
        
          STRAIGHT_JOIN a nivel global y de tabla.
          Consulte Sección 13.2.7, “Sintaxis de SELECT”.
        
          Puede adaptar variables globales o específicas de hilos de
          ejecución. Por ejemplo, inicie mysqld con
          la opción --max-seeks-for-key=1000 o
          utilice SET max_seeks_for_key=1000 para
          decirle al optimizador que asuma que ninguna rastreo de claves
          genera más de 1000 búsquedas. Consulte
          Sección 5.3.3, “Variables de sistema del servidor”.
        
Ésta es una traducción del manual de referencia de MySQL, que puede encontrarse en dev.mysql.com. El manual de referencia original de MySQL está escrito en inglés, y esta traducción no necesariamente está tan actualizada como la versión original. Para cualquier sugerencia sobre la traducción y para señalar errores de cualquier tipo, no dude en dirigirse a mysql-es@vespito.com.

