残念ながら、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'
私は内側から始めて、外にも出ていることに注意してください。