Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Unterschied zwischen diesen beiden Verbindungstabellenansätzen?

Abgesehen von der Syntax funktionieren sie für das kleine Snippet genau gleich. Aber wenn möglich, schreiben Sie neue Abfragen immer mit ANSI-JOINs.

Semantisch wird die Kommanotation verwendet, um ein KARTESISCHES Produkt zwischen zwei Tabellen zu erstellen, was bedeutet, dass eine Matrix aller Datensätze aus Tabelle A mit allen Datensätzen aus Tabelle B erstellt wird, sodass zwei Tabellen mit 4 bzw. 6 Datensätzen 24 Datensätze ergeben. Mit der WHERE-Klausel können Sie dann aus diesem kartesischen Produkt die gewünschten Zeilen auswählen. Allerdings macht MySQL diese riesige Matrix nicht wirklich durch, aber semantisch bedeutet es genau das.

Eine JOIN-Syntax ist der ANSI-Standard, der klarer definiert, wie Tabellen interagieren. Durch Setzen des ON -Klausel neben JOIN , macht es deutlich, was die beiden Tabellen miteinander verbindet.

Funktional führen sie für Ihre beiden Abfragen dasselbe aus. Der Unterschied tritt ein, wenn Sie beginnen, andere [OUTER] zu verwenden JOIN-Typen.

Speziell für MySQL hat die Kommanotation einen Unterschied

STRAIGHT_JOIN ähnelt JOIN, außer dass die linke Tabelle immer vor der rechten Tabelle gelesen wird. Dies kann für die (wenigen) Fälle verwendet werden, in denen der Join-Optimierer die Tabellen in die falsche Reihenfolge bringt.

Es wäre jedoch nicht klug auf diesen Unterschied zu setzen.