U velkých sad může mít JOIN lepší výkon než dílčí dotaz.
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
U velkých sad a při vracení velkého procenta řádků může operace JOIN obvykle překonat poddotaz. Ve vašem případě se nejedná o korelovaný poddotaz, takže MySQL by to nemělo spouštět vícekrát, takže v tom nemusí být žádný rozdíl.
Poznámka pro nefanoušky COUNT(1)
... mohli bychom nahradit všechny výskyty COUNT(1)
s COUNT(*)
nebo IFNULL(SUM(1),0)
k dosažení ekvivalentního výsledku.