tu opcion genera un cross join entre las dos tablas, lo que significa que primero hace un producto cartesiano y luego en el where descarta todas las combinaciones que no coinciden con tus filtros.
Las subconsultas yo prefiero evitarlas o restringirlas para cuando se que retornara una cantidad pequena de registros.
La mejor opcion para mi (me ha dado mejores resultados), cuando son muchos registros es utilizar joins explicitos..

Saludos!