大規模なセットの場合、JOINはサブクエリよりもパフォーマンスが向上する可能性があります。
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
大きなセットの場合、および行の大部分が返される場合、通常、JOIN操作はサブクエリよりもパフォーマンスが優れている可能性があります。あなたの場合、それは相関サブクエリではないので、MySQLはそれを複数回実行する必要がないので、違いがない可能性があります。
COUNT(1)
のファン以外の方への注意 ... COUNT(1)
のすべてのオカレンスを置き換えることができます COUNT(*)
を使用 またはIFNULL(SUM(1),0)
同等の結果を達成するため。