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

Różnica między tymi dwoma podejściami do łączenia tabel?

Poza składnią w przypadku małego fragmentu działają dokładnie tak samo. Ale jeśli to w ogóle możliwe, zawsze pisz nowe zapytania za pomocą ANSI-JOIN.

Jeśli chodzi o semantykę, to notacja przecinkowa jest używana do utworzenia iloczynu KARTEZJAŃSKIEGO między dwiema tabelami, co oznacza utworzenie macierzy wszystkich rekordów z tabeli A ze wszystkimi rekordami z tabeli B, więc dwie tabele z odpowiednio 4 i 6 rekordami dają 24 rekordy. Korzystając z klauzuli WHERE, możesz następnie wybrać żądane wiersze z tego produktu kartezjańskiego. Jednak MySQL w rzeczywistości nie podąża i nie tworzy tej ogromnej macierzy, ale semantycznie to właśnie oznacza.

Składnia JOIN to standard ANSI, który bardziej przejrzyście definiuje sposób interakcji tabel. Wstawiając ON klauzula obok JOIN , wyjaśnia, co łączy te dwie tabele.

Funkcjonalnie wykonają to samo dla twoich dwóch zapytań. Różnica pojawia się, gdy zaczniesz używać innych [OUTER] Typy JOIN.

W szczególności w przypadku MySQL notacja przecinkowa ma jedną różnicę

STRAIGHT_JOIN jest podobny do JOIN, z tą różnicą, że lewa tabela jest zawsze czytana przed prawą. Można to wykorzystać w tych (nielicznych) przypadkach, w których optymalizator złączeń ustawia tabele w złej kolejności.

Jednak nie byłoby mądre liczyć na tę różnicę.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Zapytanie z dwóch tabel w raporcie

  2. przekonwertuj datę php na format mysql

  3. Jak działa operator SOUNDS LIKE w MySQL

  4. Składnia SQL TRUNCATE – wymieniona przez DBMS

  5. Ustaw strefę czasową w PHP i MySQL