Meine Frage ist nicht, wie man inner join in sql verwendet. Ich weiß, wie es zwischen Tabelle a und Tabelle b übereinstimmt.
Ich möchte fragen, wie ist das interne Arbeiten des inneren Arbeitens. Um welchen Algorithmus handelt es sich? Was passiert intern beim Verbinden mehrerer Tabellen?
Je nach DB Server, Indizes und Datenreihenfolge (Clustered PK) gibt es unterschiedliche Algorithmen, ob berechnete Werte verknüpft sind oder nicht etc.
Sehen Sie sich einen Abfrageplan an, den die meisten SQL-Systeme für eine Abfrage erstellen können. Er sollte Ihnen eine Vorstellung davon geben, was er tut.
In MS Sql werden verschiedene Join-Algorithmen in verschiedenen Situationen verwendet, abhängig von den Tabellen (ihre Größe, welche Art von Indizes verfügbar sind usw.). Ich kann mir vorstellen, dass andere DB-Engines auch eine Vielzahl von Algorithmen verwenden.
Die wichtigsten Arten von Joins, die von Frau Sql verwendet werden, sind:
- Verschachtelte Schleifen verbindet
- Joins verbinden
- Hash verbindet
Sie können mehr über sie auf dieser Seite lesen: Msdn - Erweiterte Konzepte zur Abfrageoptimierung
Wenn Sie SQL erhalten, um den 'Ausführungsplan' für Ihre Abfragen anzuzeigen, können Sie sehen, welcher Join-Typ in verschiedenen Situationen verwendet wird.
Es hängt davon ab, welche Datenbank Sie verwenden, welcher Gruppe Sie beitreten (groß / klein, in Sequenz / zufällig, indexiert / nicht-indiziert usw.).
Zum Beispiel hat SQL Server mehrere verschiedene Join-Algorithmen; Loop-Joins, Merge-Joins, Hash-Joins. Welche verwendet wird, wird vom Optimierer bestimmt, wenn ein Ausführungsplan ausgearbeitet wird. Manchmal macht es eine Fehleinschätzung und Sie können dann einen bestimmten Join-Algorithmus mit Join-Hinweisen erzwingen.
Sie können die folgenden MSDN-Seiten interessant finden:
Ссылка (loop) < br> Ссылка (Hash)
Ссылка (Zusammenführen)
Ссылка (Hinweise)
All based set theory, schon seit einiger Zeit. Versuchen Sie, nicht zu viele Tabellen zu einer Zeit zu verknüpfen, scheint Datenbankressourcen mit dem ganzen Scannen zu verkrusten. Indizes helfen bei der Leistung, sehen Sie sich einige SQL-Sites an und suchen Sie nach Optimierung von SQL-Abfragen, um einen Einblick zu erhalten. SQL Management Studio verfügt über ein eingebautes Ausführungsplan-Dienstprogramm, das insbesondere für große komplexe Abfragen oft interessant ist.
Der Optimierer wählt (oder sollte) den schnellsten Join Algo.
Es gibt jedoch zwei verschiedene Arten zu bestimmen, was schnell ist:
Wenn Sie alle Zeilen so schnell wie möglich zurückgeben möchten, wählt der Optimierer häufig einen Hash-Join oder einen Merge-Join. Wenn Sie die ersten paar Zeilen so schnell wie möglich zurückgeben wollen, wählt der Optimierer einen Nested Loops Join.
Tags und Links sql internal inner-join