JOIN is used to select data from different tables related to each other by one or more common identifiers.
UNION is used to merge the data from two or more different queries;each of these queries can affect different tables, different criteria and different relationships. But the number of fields and the datatypes have to be identical.
Several SELECTs might give the same result as the union, but you need to process the result sets afterwards (e.g. with PHP).
Performance can depend of multiple factors (number of tables joined, other selection criteria, table size / result set size, sort criteria, ...)
I have never systematically measured the performance of this kind of thing.
But I had once a very complex UNION statement (on ORACLE D😎 : 3 different select statements, each with different conditions, sub-selects, etc. In the beginning, performance was very bad (about 20 sec.) . Then I examined each single statement; one of them was not very fast, but the overall performance was MUCH lower than of the single statement. After a thorough analysis, I added an additional WHERE clause, which lead to the same results, but increased the performance of the complete statement (UNION of 3 selects) to less than 1 sec. !!
JJ Mouris