Naprawdę nie można uciec bez dwóch zapytań MySQL. Cóż, mógłbyś, albo po prostu łącząc je w jedno, z UNION. Lub tworząc nowy połączony „tabel” (albo widok, albo widok zmaterializowany) – ale naprawdę nie sądzę, żeby było to warte wysiłku. Dwa zapytania są w porządku - jak mówisz, że zostały zindeksowane.
Możesz użyć jednego indeksu sfinksa (a tym samym jednego zapytania wyszukiwania) - tworząc nowy połączony indeks. Ponieważ mówisz, że twoje klucze nie są unikalne, musiałbyś stworzyć nowy klucz syntetyczny.
np...
sql_query = SELECT userid*2 AS id, 1 AS table_id, firstname AS one, lastname as two FROM tellycards_user_data \
UNION \
SELECT (id*2)+1 as id, 2 AS table_id, name AS one, screenshot AS two FROM tellycards_ripples
sql_attr_unit = table_id
Daje to fałszywy klucz i atrybut identyfikujący tabelę, z której pochodzi wynik. Możesz użyć tego, aby uzyskać oryginalny stół, z którego pochodzi. (jest wiele innych sposobów na zrobienie tego samego)
Pozwala to na uruchomienie jednego zapytania, może uzyskać połączone wyniki.
... ALE nie przekonałem się, że to dobry pomysł. Ponieważ jeśli wyniki są asymetryczne, możesz przegapić wyniki. Załóżmy, że jest 20 pasujących wyników z jednej tabeli i 10 z drugiej. Załóżmy, że pokazujesz 10 najlepszych wyników, teraz ze względu na limit, wyniki z drugiej tabeli mogą być ukryte pod pierwszą tabelą (przykład extrem, w rzeczywistości, miejmy nadzieję, że się przemieszały). Dwa oddzielne zapytania, pozwalają zagwarantować, że z każdej tabeli uzyskasz NIEKTÓRE wyniki.
... więc po tym wszystkim. Trzymaj się tego, co masz. W porządku.