MySQL bohužel není moc dobrá v optimalizaci poddotazů pomocí IN. Toto je z dokumentace MySQL :
Zkuste místo toho použít JOIN.
Protože MySQL funguje zevnitř ven, někdy můžete oklamat MySQL tím, že zabalíte poddotaz do dalšího poddotazu, jako je tento:
SELECT COUNT(*) FROM table_name WHERE device_id IN
(SELECT * FROM (SELECT DISTINCT device_id FROM table_name WHERE NAME = 'SOME_PARA') tmp)
Zde je řešení 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'
Všimněte si, že začínám zevnitř a jdu také ven.