Ifølge dette spørgsmål , understøttelse af tuples i MySQL er ikke optimeret. Som @O.Jones skriver i sin kommentar, er forespørgselsplanlæggeren i MySQL et meget komplekst dyr, og ting der bør arbejdet opfører sig ikke altid, som du kunne forvente.
Jeg tror, din anden forespørgsel er hurtigere, fordi den første where-sætning dept_id in (101, 103)
reducerer søgerummet for den anden, der bruger tupler. Forespørgselsoptimeringsværktøjet bør gør dette automagisk, men gør det i hvert fald ikke i dit eksempel.
Jeg tror ikke på IN
klausulen er problemet - det er tuple-sammenligningen, der scanner hele tabellen og ikke bruger tilgængelige indekser.