sql >> Database teknologi >  >> RDS >> Mysql

Er der en bedre måde at få data fra to tabeller på én gang med Sphinx/MySQL?

Du kan ikke rigtig slippe afsted med ikke at have to MySQL-forespørgsler. Det kunne du godt, enten ved bare at kombinere dem til én, med UNION. Eller ved at skabe en ny kombineret 'tabel' (enten en visning eller en materialiseret visning) - men tror virkelig ikke, det er besværet værd. To forespørgsler er helt i orden - som du siger, de indekserede.

Du kan bruge et sfinxindeks (og dermed en søgeforespørgsel) - ved at oprette et nyt kombineret indeks. Fordi du siger, at dine nøgler ikke er unikke, bliver du nødt til at oprette en ny syntetisk nøgle.

fx...

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

Dette giver dig en falsk nøgle og en egenskab til at identificere, hvilken tabel resultatet kom fra. Du kan bruge dette til at få det originale bord, det kom fra. (der er mange andre måder at gøre det samme på)

Dette giver dig mulighed for at køre en forespørgsel, kan få kombinerede resultater.

... MEN ikke overbevist om, at det er en god idé. For hvis resultaterne er asymmetriske, kan du gå glip af resultater. Lad os sige, at der er 20 matchende resultater fra en tabel og 10 fra en anden. Sig, at du viser de 10 bedste resultater, nu på grund af grænsen, resultaterne fra den anden tabel, kunne godt være skjult under den første tabel (ekstremt eksempel, i virkeligheden, forhåbentlig blandede de sig). To separate forespørgsler giver dig mulighed for at garantere nogle resultater fra hver tabel.

... så efter alt det. Hold dig til, hvad du har. Det er fint.



  1. Sådan installeres Oracle Express Edition til SQL Practice

  2. jOOQ indsæt forespørgsel med returnerende genererede nøgler

  3. Hvordan kan jeg bestemme installerede SQL Server-instanser og deres versioner?

  4. Skift og store søgninger i Django, men ignoreret i Mysql