Parece que está buscando la suma de recuentos de registros para una serie de consultas diferentes de sus tablas.
La primera alternativa... contar los resultados de cada consulta, luego agregarlos... será más rápido. ¿Por qué? Tiene menos trabajo que hacer. Su segunda alternativa tiene que disputar un conjunto de comid
valores y luego contarlos. Eso lleva tiempo.
Usa COUNT(*)
si puedes. Es más barato. Usa UNION ALL
en lugar de UNION
cuando pueda; UNION
elimina duplicados y UNION ALL
no. Eliminar duplicados lleva tiempo.
El rendimiento de cualquiera de las alternativas depende de las buenas elecciones de índices para cada subconsulta.