Non ho ben chiaro cosa sia una normale query, ma queste sopra mi pare abbastanza espensiva.
Se capisco correttamente fai ricerche all'interno di campi testo sulla base di pezzi di stringhe multiple.
Innanzitutto: che motore usi? MyIsam o Innodb? Le prestazioni tra i due differiscono parecchio, soprattutto per quanto riguarda l'indicizzazione di campi character. MyIsam consente ad esempio l'indicizzazione FULLTEXT.
Inoltre, non mi piace l'idea di far eseguire query multiple, hai fatto dei benchmark aggregando i dati di due o più tabelle per vedere i risultati?
Le tabelle come sono strutturate poi? Hanno valori duplicati? un UNION o UNION ALL sarebbe di aiuto?
Non conosco la struttura del tuo db, nè perché hai 15 tabelle più o meno simili, ma prenderei in esame la possibilità di migrare ad altra piattaforma (ad esempio PostgreSQL) che supporti le materialized views, che a quanto ne so purtroppo non sono ancora supportate in MySQL.
Restando in MySQL potresti però escogitare un qualche workaround che ti permetta di simularne l'impiego di una materialized view, caricando i dati un una tabella ad-hoc e gestendone l'aggiornamento periodico via gli Events.