Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Czy istnieje lepszy sposób na pobieranie danych z dwóch tabel jednocześnie za pomocą Sphinx/MySQL?

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.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Dlaczego warto korzystać z frameworków? Przekonaj mnie, że powinienem wymyślić Zend Framework i go używać

  2. Flask-SQLAlchemy:nie można połączyć się ponownie, dopóki nieprawidłowa transakcja nie zostanie wycofana

  3. Użyć BLOB lub VARBINARY dla zaszyfrowanych danych w MySQL?

  4. MySQL usuwa wiersz z wielu tabel

  5. Wiele instrukcji INSERT mysql w jednym zapytaniu php