For store sæt kan en JOIN fungere bedre end underforespørgslen.
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
For store sæt, og når en stor procentdel af rækkerne returneres, kan JOIN-operationen normalt overgå en underforespørgsel. I dit tilfælde er det ikke en korreleret underforespørgsel, så MySQL burde ikke skulle udføre det flere gange, så det gør måske ikke nogen forskel.
Bemærkning til ikke-fans af COUNT(1) ... vi kunne erstatte enhver og alle forekomster af COUNT(1) med COUNT(*) eller IFNULL(SUM(1),0) at opnå tilsvarende resultat.