cominciamo col dire che potresti benissimo postare un dump delle tabelle (delle prime righe della tabelle) senza particolari patemi, ed avresti la risposta "definitiva"
---
Riguardo al resto se vuoi fare un "mischione" devi avere una lista di campi che sia analoga per entrambe le tabelle.
Non è difficile da fare, basta invece di fare un select * from blablabla mettere i singoli campi
codice:
select nome as campo1, cognome as campo2, indirizzo as campo3 from tabella1
union
select citta as campo1, cap as campo2, via as campo3 from tabella2
order by campo2 desc
eventualmente dovrai porre dei CAST per uniformare il tipo di campo tra le varie tabelle.
Considera che è una modalità estremamente inefficiente, in quanto generi tabelle temporanee che poi andranno ordinate, al 99% ti beccherai sia using filesort che union result.
Riguardo al numero di righe sono db piccoli, non prevedo problemi di sorta, che nascono quando le tabelle temporanee NON riescono a risiedere in RAM
Ho appena fatto un test sulla mia macchina con due tabelle da 10 milioni di righe e una union di 2 campi di 200 caratteri con ordinamento: ha richiesto 5 secondi.
EDIT: se sono interrogazioni frequenti ti potrebbe convenire fare (lato applicazione o db con trigger) una "tabellona" nella quale inserisci man mano tutte le righe delle altre tabelle, mettendoci un indice sul campo che vuoi usare per ordinare.
Se le righe aggiunte son relativamente poche/ms probabilmente avresti query più veloci e, in questo caso, addirittura ti converrebbe usare myisam per la capacità di "appendere-in-coda" con minor overhead