Según esta pregunta , el soporte para tuplas en MySQL no está optimizado. Como @O.Jones escribe en su comentario, el planificador de consultas en MySQL es una bestia poderosamente compleja, y las cosas que deberían trabajo no siempre se comportan como cabría esperar.
Creo que su segunda consulta es más rápida porque la primera cláusula where dept_id in (101, 103)
reduce el espacio de búsqueda para el segundo que utiliza las tuplas. El optimizador de consultas debería haz esto automáticamente, pero al menos en tu ejemplo no lo hace.
No creo en el IN
La cláusula es el problema:es la comparación de tuplas la que escanea toda la tabla y no usa los índices disponibles.