Subconsultas vs uniones

Refactué una sección lenta de una aplicación que heredamos de otra compañía para usar una unión interna en lugar de una subconsulta como

where id in (select id from ... )

La consulta refactorizada se ejecuta aproximadamente 100 veces más rápido. (~ 50 segundos a ~ 0.3) Esperaba una mejora, pero ¿alguien puede explicar por qué fue tan drástico? Las columnas utilizadas en la cláusula where fueron todas indexadas. ¿SQL ejecuta la consulta en la cláusula where una vez por fila o algo?

Actualizar - Explicar resultados:

La diferencia está en la segunda parte de la consulta "where id in ()" -

2   DEPENDENT SUBQUERY  submission_tags ref st_tag_id   st_tag_id   4   const   2966    Using where

vs 1 fila indexada con la unión:

    SIMPLE  s   eq_ref  PRIMARY PRIMARY 4   newsladder_production.st.submission_id  1   Using index

Respuestas a la pregunta(13)

Su respuesta a la pregunta