बड़े सेट के लिए, जॉइन सबक्वेरी से बेहतर प्रदर्शन कर सकता है।
SELECT ma.actor
, COUNT(1) AS total
, COUNT(1) / t.cnt * 100 AS `percentage`
FROM movies_actors ma
CROSS
JOIN (SELECT COUNT(1) AS cnt FROM movies_actors) t
GROUP
BY ma.actor
, t.cnt
बड़े सेटों के लिए, और जब पंक्तियों का एक बड़ा प्रतिशत वापस किया जा रहा है, तो जॉइन ऑपरेशन आमतौर पर एक सबक्वायरी से बेहतर प्रदर्शन कर सकता है। आपके मामले में, यह एक सहसंबद्ध उपश्रेणी नहीं है, इसलिए MySQL को इसे कई बार निष्पादित नहीं करना चाहिए, इसलिए इससे कोई फर्क नहीं पड़ सकता है।
COUNT(1)
. के गैर-प्रशंसकों के लिए नोट ... हम COUNT(1)
. की किसी भी और सभी घटनाओं को बदल सकते हैं COUNT(*)
. के साथ या IFNULL(SUM(1),0)
समकक्ष परिणाम प्राप्त करने के लिए।