За съжаление MySQL не е много добър в оптимизирането на подзаявки с IN. Това е от документация на MySQL :
Опитайте да използвате JOIN вместо това.
Тъй като MySQL работи отвътре навън, понякога можете да измамите MySQL, като обвиете подзаявката в още една подзаявка по следния начин:
SELECT COUNT(*) FROM table_name WHERE device_id IN
(SELECT * FROM (SELECT DISTINCT device_id FROM table_name WHERE NAME = 'SOME_PARA') tmp)
Ето решението JOIN:
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'
Забележете, че започвам отвътре и също излизам.