U kunt niet echt wegkomen zonder twee MySQL-query's. Nou, dat zou je kunnen doen, door ze gewoon te combineren tot één, met UNION. Of door een nieuwe gecombineerde 'tabel' te maken (een weergave of een gematerialiseerde weergave) - maar denk niet dat het de moeite waard is. Twee zoekopdrachten zijn prima - zoals u zegt, zijn ze geïndexeerd.
U kunt één sphinx-index gebruiken (en dus één zoekopdracht) door een nieuwe gecombineerde index te maken. Omdat je zegt dat je sleutels niet uniek zijn, zou je een nieuwe synthetische sleutel moeten maken.
bv...
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
Dit geeft je een nepsleutel en een attribuut om te identificeren uit welke tabel het resultaat kwam. U kunt dit gebruiken om de originele tafel te krijgen waar het vandaan kwam. (er zijn veel andere manieren om hetzelfde te doen)
Hierdoor kunt u één query uitvoeren en gecombineerde resultaten krijgen.
... MAAR niet overtuigd dat het een goed idee is. Want als de resultaten asymmetrisch zijn, kunt u resultaten missen. Stel dat er 20 overeenkomende resultaten zijn van de ene tabel en 10 van een andere. Stel dat u de top 10 resultaten laat zien, nu vanwege de limiet, de resultaten van de tweede tabel, zouden goed verborgen kunnen zijn onder de eerste tabel (extreem voorbeeld, in werkelijkheid, hopelijk vermengden ze zich). Twee afzonderlijke zoekopdrachten, waarmee u kunt garanderen, ENKELE resultaten van elke tabel te krijgen.
... dus na dat alles. Blijf bij wat je hebt. Het is goed.