दुर्भाग्य से, MySQL IN के साथ उपश्रेणियों को अनुकूलित करने में बहुत अच्छा नहीं है। यह MySQL प्रलेखन से है :
इसके बजाय जॉइन का उपयोग करने का प्रयास करें।
चूंकि 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)
ये है जॉइन सॉल्यूशन:
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'
ध्यान दें कि मैं अंदर से शुरू करता हूं और बाहर भी जाता हूं।