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.