Niestety, MySQL nie jest zbyt dobry w optymalizacji podzapytań za pomocą IN. Pochodzi z dokumentacji MySQL :
Spróbuj zamiast tego użyć JOIN.
Ponieważ MySQL działa od wewnątrz, czasami możesz oszukać MySQL, umieszczając podzapytanie w jeszcze jednym podzapytaniu:
SELECT COUNT(*) FROM table_name WHERE device_id IN
(SELECT * FROM (SELECT DISTINCT device_id FROM table_name WHERE NAME = 'SOME_PARA') tmp)
Oto rozwiązanie DOŁĄCZ:
SELECT COUNT(DISTINCT t2.id) FROM table_name t1
JOIN table_name t2
ON t2.device_id = t1.device_id
WHERE t1.NAME = 'SOME_PARA'
Zauważ, że zaczynam od środka i też wychodzę.