Convert UNION query to JOIN. Is it actually needed for high performance?
You use LIMIT without ORDER BY - that may return different 30 rows each time it is executed. 

Other than that if you combine the two unioned queries into one join, you will have OR in WHERE which will check columns from different tables - that is probably going to be much slower than what you have now, union is good for this. You might want to use UNION ALL instead if you know that there will be no duplicates or that they are no problem to you as it does not have to check and eliminate them and can be even faster that UNION.