1. Utilizar el comando EXPLAIN
  2. Utilizar permisos poco complejos: permite reducir la sobrecarga cuando los clientes ejecutan las sentencias
  3. Utilizar la función BENCHMARCH() para ver lo rápido que MySQL procesa la expresión
  4. Optimizar la cláusula WHERE: elimine paréntesis innecesarios. Use la opción SQL_SMALL_RESULT para indicarle al optimizador que el conjunto de datos a devolver es pequeño
  5. Ejecutar OPTIMIZE TABLE: defragmenta, repara y ordena los archivos
  6. Evitar columnas de longitud variable como VARCHAR, BLOB, and TEXT
  7. Utilizar INSERT DELAYED cuando los clientes no pueden esperar a que el INSERT se complete
  8. Priorizar las sentencias con INSERT LOW_PRIORITY y SELECT HIGH_PRIORITY
  9. Usar INSERT múltiple para insertar varias filas (INSERT INTO … VALUES (…),(…),(…) )
  10. Sincronizar los tipos de datos. Por ejemplo, que los tipos de datos de los campos utilizados en un JOIN sean los mismos.

Vía: 10 tips for optimizing mysql queries