Leider ist MySQL nicht sehr gut darin, Unterabfragen mit IN zu optimieren. Dies stammt aus der MySQL-Dokumentation :
Versuchen Sie es stattdessen mit einem JOIN.
Da MySQL von innen nach außen arbeitet, können Sie MySQL manchmal austricksen, indem Sie die Unterabfrage wie folgt in eine weitere Unterabfrage einpacken:
SELECT COUNT(*) FROM table_name WHERE device_id IN
(SELECT * FROM (SELECT DISTINCT device_id FROM table_name WHERE NAME = 'SOME_PARA') tmp)
Hier ist die JOIN-Lösung:
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'
Beachten Sie, dass ich von innen beginne und auch nach außen gehe.