sql >> Database >  >> RDS >> Mysql

Is er een betere manier om gegevens uit twee tabellen tegelijk te krijgen met Sphinx/MySQL?

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.



  1. PostgreSQL 11 implementeren en beheren:nieuw in ClusterControl 1.7.1

  2. De naam van een kolom in SQL Server wijzigen (T-SQL)

  3. hoe Indiase taal zoals Telugu, Hindi op te slaan in mysql-database

  4. RMySQL, fetch errors - RS-DBI driver waarschuwing:(fout bij het ophalen van rijen)