Union será más rápido, ya que simplemente pasa la primera instrucción SELECT y luego analiza la segunda instrucción SELECT y agrega los resultados al final de la tabla de salida.
La unión pasará por cada fila de ambas tablas, encontrando coincidencias en la otra tabla, por lo tanto, necesitará mucho más procesamiento debido a la búsqueda de filas coincidentes para todas y cada una de las filas.
EDITAR
Por Unión, me refiero a Unión Todo, ya que parecía adecuado para lo que estaba tratando de lograr. Aunque una unión normal es generalmente más rápida que unirse.
EDITAR 2 (Responder al comentario de @seebiscuit)
no estoy de acuerdo con el Técnicamente hablando, no importa cuán buena sea su combinación, una "UNIÓN" sigue siendo más costosa que una concatenación pura. Hice una publicación de blog para probarlo en mi blog codePERF[dot]net . En términos prácticos, sirven para 2 propósitos completamente diferentes y es más importante asegurarse de que su indexación sea correcta y utilice la herramienta adecuada para el trabajo.
Técnicamente, creo que se puede resumir usando los siguientes 2 planes de ejecución tomados de mi publicación de blog:
UNION ALL
Plan de Ejecución
JOIN
Plan de Ejecución
Resultados prácticos
En términos prácticos, la diferencia en una búsqueda de índice agrupado es insignificante: