Wo existiert vs. Join-Leistung?
Wo existiert vs. Join-Leistung?
Anonim

In den meisten Fällen, EXISTIERT oder BEITRETEN ist viel effizienter (und schneller) als eine IN-Anweisung. Mit einem EXISTIERT oder ein BEITRETEN, gibt die Datenbank true/false zurück, während die angegebene Beziehung überprüft wird. Sofern die Tabelle in der Unterabfrage nicht sehr klein ist, EXISTIERT oder BEITRETEN wird viel besser funktionieren als IN.

Außerdem, wo existiert die Leistung der inneren Verbindung?

2 Antworten. Allgemein gesagt, INNERE VERBINDUNG und EXISTIERT sind verschiedene Dinge. Wenn du es tust innere Verbindung auf einer EINZIGARTIGEN Säule zeigen sie dasselbe Leistung. Wenn du es tust innere Verbindung auf einem Recordset mit DISTINCT angewendet (um die Duplikate loszuwerden), EXISTIERT ist normalerweise schneller.

Zweitens ist LEFT JOIN schneller als beitreten? EIN LINKS BEITRETEN ist absolut nicht schneller als ein INNERES BEITRETEN. Tatsächlich ist es langsamer; per Definition ein äußeres beitreten (LINKS BEITRETEN oder richtig BEITRETEN) muss die ganze Arbeit eines INNEREN machen BEITRETEN plus die zusätzliche Arbeit der Null-Erweiterung der Ergebnisse.

Auf diese Weise, was ist schneller vorhanden oder in?

Die EXISTIERT Klausel ist viel Schneller als IN, wenn die Unterabfrageergebnisse sehr groß sind. Umgekehrt lautet die IN-Klausel Schneller als EXISTIERT wenn die Unterabfrageergebnisse sehr klein sind. Außerdem kann die IN-Klausel nichts mit NULL-Werten vergleichen, aber die EXISTIERT -Klausel kann alles mit NULL vergleichen.

Welcher SQL JOIN ist schneller?

Nun, im Allgemeinen INNERE VERBINDUNG wird sein Schneller da es nur die Zeilen zurückgibt, die in allen verknüpften Tabellen basierend auf der verknüpften Spalte übereinstimmen. Aber LINKS BEITRETEN gibt alle Zeilen aus einer mit LEFT angegebenen Tabelle und alle übereinstimmenden Zeilen aus einer mit RIGHT angegebenen Tabelle zurück.

Beliebt nach Thema