Cita: no entiendo la diferencia entre ponerlo como una subconsulta a ponerlo como lo tenía yo...
En el modo en que tu lo hacías, el pimer INNER JOIN tomaba
todos los registros coincidentes de la tabla2,
incluidos aquellos en que el tabla2.campo = "valor" no se cumplía, antes de eliminarlos. Como esto podía implicar muchos muchos registros, perdía tiempo inútilmente leyendo información
que luego no iba a usar.
Al poner ese primer filtro como subconsulta, se eliminan de entrada todos aquellos registros que
seguro no vas a usar, y se hace la selección fina sobre una tabla mucho más reducida. Esa tarea es inmensamente rápida.
En MySQL, LEFT OUTER JOIN es sinónimo de LEFT JOIN, y te devuelve todos los registros de la tabla izquierda del FROM, no hace el mismo filtrado que MSSQL Server u Oracle. Tenlo en cuenta.