Unterschied zwischen Theta Style und INNER JOIN

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Unterschied zwischen Theta Style und INNER JOIN

    Da ich schon seit längerem beruflich nicht mehr so viel mit MySQL zu tun habe, stelle ich mir obige Frage. Worin genau liegt der Unterschied zwischen
    Code:
    SELECT 
      p.produkt,
      p.preis,
      h.zulieferer
    FROM
      produkt p,
      hersteller h
    WHERE
      p.hs_link = h.id
    und
    Code:
    SELECT 
      p.produkt,
      p.preis,
      h.zulieferer
    FROM
      produkt p
    INNER JOIN  
      hersteller h ON p.hs_link = h.id
    Beide liefern dasselbe Ergebnis und erfüllen dieselbe Aufgabe. Hat das was mit der Abfragegeschwindigkeit zu tun und welche Variante ist empfehlenswerter?

    AmicaNoctis?

    Peter
    Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
    Meine Seite

  • #2
    Hallo Peter,

    generell ist die zweite Variante empfehlenswerter. Theta-Style Joins sind böse. Sie können nicht vernünftig mit Aliasen umgehen und erzeugen erstmal ein komplettes Kreuzprodukt, das dann über die Where-Klausel gefiltert wird.

    Echte Joins dagegen lassen sich besser optimieren, aliasen und es muss nicht erst ein komplettes Kreuzprodukt erstellt werden, weil die on-Klausel es von vornherein einschränkt. In manchen Fällen entsteht sogar ein Equi-Join, der am effektivsten ist.

    Gruß,

    Amica
    [COLOR="DarkSlateGray"]Hast du die [COLOR="DarkSlateGray"]Grundlagen zur Fehlersuche[/color] gelesen? Hast du Code-Tags benutzt?
    Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
    Super, danke!
    [/COLOR]

    Kommentar


    • #3
      technisch gesehen kein Unterschied.
      Aus dem menschlichen Sicht ist aber die Join-Bedingungen viel besser in ON abzulegen und die Suchbedingungen in WHERE um die lesbarkeit von SQLs zu verbessern.
      Slava
      bituniverse.com

      Kommentar


      • #4
        Hab nochmal nachgelesen: Ich glaub, Slava hat Recht.

        Das Alias-Problem wurde vor kurzem hier angesprochen.

        Dann nimm mein erstes Posting einfach als meine persönliche Meinung zur Kenntnis und ignoriere alle Behauptungen, die konträr zu Slavas Beitrag sind

        Bezüglich der Empfehlbarkeit wird ANSI-Style (also das was nicht Theta-Style ist) auch von offizieller Seite (MySQL) bevorzugt.
        [COLOR="DarkSlateGray"]Hast du die [COLOR="DarkSlateGray"]Grundlagen zur Fehlersuche[/color] gelesen? Hast du Code-Tags benutzt?
        Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
        Super, danke!
        [/COLOR]

        Kommentar

        Lädt...
        X