Според този въпрос , поддръжката на кортежи в MySQL не е оптимизирана. Както @O.Jones пише в своя коментар, плановщикът на заявки в MySQL е изключително сложен звяр и неща, които трябва работа не винаги се държат както бихте очаквали.
Вярвам, че втората ви заявка е по-бърза, защото първата клауза where dept_id in (101, 103)
намалява пространството за търсене за втория, който използва кортежите. Оптимизаторът на заявки трябва направете това автоматично, но поне във вашия пример не го прави.
Не вярвам на IN
клаузата е проблемът - това е сравнението на кортежи, което сканира цялата таблица и не използва наличните индекси.