Inhaltsverzeichnis
Einfacher Nested-Loop-Join
# 🎜🎜#
Heim Datenbank MySQL-Tutorial So optimieren Sie die Join-Anweisung in MySQL

So optimieren Sie die Join-Anweisung in MySQL

Jun 03, 2023 am 09:31 AM
mysql join

Einfacher Nested-Loop-Join

Werfen wir einen Blick darauf, wie MySQL bei der Durchführung einer Join-Operation funktioniert. Was sind die gängigen Join-Methoden?

So optimieren Sie die Join-Anweisung in MySQL

Wie im Bild gezeigt, ist die Tabelle auf der linken Seite, wenn wir den Verbindungsvorgang ausführen Angesteuerte Tabelle , und die Tabelle auf der rechten Seite ist # 🎜🎜#driven table

Einfacher Nested-Loop-Join Bei dieser Join-Operation wird ein Datensatz aus der Treibertabelle entnommen und dann mit den Datensätzen der getriebenen Tabelle abgeglichen Wenn die Bedingungen übereinstimmen, wird das Ergebnis zurückgegeben. Fahren Sie dann mit dem Abgleichen des nächsten Datensatzes in der Treibertabelle fort, bis alle Daten in der Treibertabelle abgeglichen wurden.

Weil es zeitaufwändig ist, jedes Mal Daten aus der Treibertabelle abzurufen , MySQL verwendet diesen Algorithmus nicht, um Verbindungsvorgänge auszuführen

Nested-Loop-Join blockieren

So optimieren Sie die Join-Anweisung in MySQL

Um zu vermeiden, dass das Abrufen von Daten aus der Tabelle jedes Mal zeitaufwändig ist, können wir einen Datenstapel auf einmal aus der Treibertabelle abrufen und entsprechende Vorgänge im Speicher durchführen. Nachdem dieser Datenstapel abgeglichen wurde, wird ein Datenstapel aus der Treibertabelle abgerufen und im Speicher abgelegt, bis alle Daten in der Treibertabelle übereinstimmen.

Der Batch-Datenabruf kann viele IOs reduzieren Operationen, daher ist die Ausführungseffizienz relativ hoch. Diese Verbindungsoperation wird auch von MySQL verwendet Sehen Sie sich die Größe des Join-Puffers an#🎜🎜 #
show variables like '%join_buffer%'
Nach dem Login kopieren

Verschieben Sie die zuvor verwendete Single_Table-Tabelle, erstellen Sie 2 Tabellen basierend auf der Single_Table-Tabelle und fügen Sie 1 W zufällig ein Datensätze in jede Tabelle

CREATE TABLE single_table (
    id INT NOT NULL AUTO_INCREMENT,
    key1 VARCHAR(100),
    key2 INT,
    key3 VARCHAR(100),
    key_part1 VARCHAR(100),
    key_part2 VARCHAR(100),
    key_part3 VARCHAR(100),
    common_field VARCHAR(100),
    PRIMARY KEY (id),
    KEY idx_key1 (key1),
    UNIQUE KEY idx_key2 (key2),
    KEY idx_key3 (key3),
    KEY idx_key_part(key_part1, key_part2, key_part3)
) Engine=InnoDB CHARSET=utf8;

create table t1 like single_table;
create table t2 like single_table;
Nach dem Login kopieren
# 🎜🎜#Wenn Sie die Join-Anweisung direkt verwenden, wählt der MySQL-Optimierer möglicherweise Tabelle t1 oder t2 als treibende Tabelle aus, was sich auf den Prozess der Analyse der SQL-Anweisung auswirkt, daher verwenden wir Straight_join Damit MySQL eine feste Verbindung zum Ausführen der Abfrage verwenden kannSo optimieren Sie die Join-Anweisung in MySQL
select * from t1 straight_join t2 on (t1.common_field = t2.common_field)
Nach dem Login kopieren

Die Laufzeit beträgt 0,035 s

Der Ausführungsplan ist wie folgt

So optimieren Sie die Join-Anweisung in MySQL

# 🎜🎜# Ich habe in der Spalte „Extra“ gesehen, dass der Join-Puffer verwendet wird, was darauf hinweist, dass der Verbindungsvorgang auf

Block Nested-Loop Join basiert# 🎜🎜# Algorithmus

Index Nested-Loop JoinSo optimieren Sie die Join-Anweisung in MySQL# 🎜🎜#Nachdem Sie den

Block Nested-Loop Join

Algorithmus verstanden haben, können Sie sehen, dass jeder Datensatz in Die Treibertabelle gleicht alle Datensätze in der gesteuerten Tabelle ab. Kann die Effizienz des gesteuerten Tabellenabgleichs verbessert werden? Ich denke, Sie haben auch an diesen Algorithmus gedacht, der darin besteht, Indizes zu den durch die gesteuerte Tabelle verbundenen Spalten hinzuzufügen, sodass der Abgleichsprozess sehr schnell ist, wie im Bild gezeigt

# 🎜🎜#

Werfen wir einen Blick darauf, wie schnell es ist, Abfragen basierend auf Verknüpfungen basierend auf Indexspalten durchzuführen.

select * from t1 straight_join t2 on (t1.id = t2.id)
Nach dem Login kopieren
Die Ausführungszeit beträgt 0,001 Sekunden, was offensichtlich um mehr als eine Ebene schneller ist als die Verbindung basierend auf gewöhnlichen Spalten

# 🎜🎜# Der Ausführungsplan lautet wie folgt So optimieren Sie die Join-Anweisung in MySQL

Es werden nicht alle Spalten der Treibertabellendatensätze nur in den Join-Puffer gestellt Die Spalten in der Abfrageliste und Filterung. Nur die Spalten in der Bedingung werden in den Join-Puffer gestellt, daher verwenden wir nicht * als Abfrageliste, sondern müssen nur die Spalten, die uns wichtig sind, in die Abfrageliste einfügen dass mehr Datensätze im Join-Puffer platziert werden können#🎜🎜 #

So optimieren Sie die Join-Anweisung in MySQLWie wähle ich die Treibertabelle aus?

Nachdem wir nun die spezifische Implementierung von Join kennen, sprechen wir über eine häufig gestellte Frage, nämlich: Wie wählt man die Treibertabelle aus? Wenn der Join-Puffer groß genug ist, Wer macht das? Die Treibertabelle hat keinen Einfluss weniger Daten und die Häufigkeit, mit der sie in den Join-Puffer gestellt werden, ist gering, was die Anzahl der Scans der Tabelle verringert ein Index Nested-Loop Join-Algorithmus

So optimieren Sie die Join-Anweisung in MySQLAngenommen, die Anzahl der Zeilen der Treibertabelle ist M, daher müssen M Zeilen der Treibertabelle gescannt werden

#🎜🎜 #Jedes Mal, wenn eine Datenzeile aus der gesteuerten Tabelle abgerufen wird, muss zuerst der Index a und dann der Primärschlüsselindex durchsucht werden. Die Anzahl der Zeilen in der gesteuerten Tabelle beträgt N. Die ungefähre Komplexität des Durchsuchens eines Baums beträgt jedes Mal den Logarithmus der Basis 2 N, daher beträgt die zeitliche Komplexität des Durchsuchens einer Zeile in der gesteuerten Tabelle 2∗log2N

#🎜🎜; #Jede Datenzeile in der treibenden Tabelle muss einmal in der getriebenen Tabelle durchsucht werden. Die ungefähre Komplexität des gesamten Ausführungsprozesses beträgt M + M &lowast 2 ∗ 2∗log2N

Offensichtlich hat M einen größeren Einfluss auf die Anzahl der gescannten Zeilen, daher sollte eine kleine Tabelle als Steuertabelle verwendet werden. Die Voraussetzung dieser Schlussfolgerung ist natürlich, dass der Index der gesteuerten Tabelle verwendet werden kann

Kurz gesagt, wir können die kleine Tabelle als Treibertabelle verwenden.

Wenn die Join-Anweisung langsam ausgeführt wird, können wir sie mit den folgenden Methoden optimieren:

  • Beim Ausführen der Join-Operation kann die gesteuerte Tabelle dies tun verwendet werden Index

  • Verwenden Sie eine kleine Tabelle als Treibertabelle

  • Erhöhen Sie die Größe des Join-Puffers

  • Verwenden Sie * nicht als Abfrageliste, sondern geben Sie nur die erforderlichen Spalten zurück

Das obige ist der detaillierte Inhalt vonSo optimieren Sie die Join-Anweisung in MySQL. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

AI Hentai Generator

AI Hentai Generator

Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

R.E.P.O. Energiekristalle erklärten und was sie tun (gelber Kristall)
4 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Beste grafische Einstellungen
4 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. So reparieren Sie Audio, wenn Sie niemanden hören können
4 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Wie man alles in Myrise freischaltet
1 Monate vor By 尊渡假赌尊渡假赌尊渡假赌

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

MySQL: Die einfache Datenverwaltung für Anfänger MySQL: Die einfache Datenverwaltung für Anfänger Apr 09, 2025 am 12:07 AM

MySQL ist für Anfänger geeignet, da es einfach zu installieren, leistungsfähig und einfach zu verwalten ist. 1. Einfache Installation und Konfiguration, geeignet für eine Vielzahl von Betriebssystemen. 2. Unterstützung grundlegender Vorgänge wie Erstellen von Datenbanken und Tabellen, Einfügen, Abfragen, Aktualisieren und Löschen von Daten. 3. Bereitstellung fortgeschrittener Funktionen wie Join Operations und Unterabfragen. 4. Die Leistung kann durch Indexierung, Abfrageoptimierung und Tabellenpartitionierung verbessert werden. 5. Backup-, Wiederherstellungs- und Sicherheitsmaßnahmen unterstützen, um die Datensicherheit und -konsistenz zu gewährleisten.

Wie man phpmyadmin öffnet Wie man phpmyadmin öffnet Apr 10, 2025 pm 10:51 PM

Sie können PhpMyAdmin in den folgenden Schritten öffnen: 1. Melden Sie sich beim Website -Bedienfeld an; 2. Finden und klicken Sie auf das Symbol phpmyadmin. 3. Geben Sie MySQL -Anmeldeinformationen ein; 4. Klicken Sie auf "Login".

MySQL und SQL: Wesentliche Fähigkeiten für Entwickler MySQL und SQL: Wesentliche Fähigkeiten für Entwickler Apr 10, 2025 am 09:30 AM

MySQL und SQL sind wesentliche Fähigkeiten für Entwickler. 1.MYSQL ist ein Open -Source -Relational Database Management -System, und SQL ist die Standardsprache, die zum Verwalten und Betrieb von Datenbanken verwendet wird. 2.MYSQL unterstützt mehrere Speichermotoren durch effiziente Datenspeicher- und Abruffunktionen, und SQL vervollständigt komplexe Datenoperationen durch einfache Aussagen. 3. Beispiele für die Nutzung sind grundlegende Abfragen und fortgeschrittene Abfragen wie Filterung und Sortierung nach Zustand. 4. Häufige Fehler umfassen Syntaxfehler und Leistungsprobleme, die durch Überprüfung von SQL -Anweisungen und Verwendung von Erklärungsbefehlen optimiert werden können. 5. Leistungsoptimierungstechniken umfassen die Verwendung von Indizes, die Vermeidung vollständiger Tabellenscanning, Optimierung von Join -Operationen und Verbesserung der Code -Lesbarkeit.

So erstellen Sie Navicat Premium So erstellen Sie Navicat Premium Apr 09, 2025 am 07:09 AM

Erstellen Sie eine Datenbank mit Navicat Premium: Stellen Sie eine Verbindung zum Datenbankserver her und geben Sie die Verbindungsparameter ein. Klicken Sie mit der rechten Maustaste auf den Server und wählen Sie Datenbank erstellen. Geben Sie den Namen der neuen Datenbank und den angegebenen Zeichensatz und die angegebene Kollektion ein. Stellen Sie eine Verbindung zur neuen Datenbank her und erstellen Sie die Tabelle im Objektbrowser. Klicken Sie mit der rechten Maustaste auf die Tabelle und wählen Sie Daten einfügen, um die Daten einzufügen.

MySQL: Einfache Konzepte für einfaches Lernen MySQL: Einfache Konzepte für einfaches Lernen Apr 10, 2025 am 09:29 AM

MySQL ist ein Open Source Relational Database Management System. 1) Datenbank und Tabellen erstellen: Verwenden Sie die Befehle erstellte und creatEtable. 2) Grundlegende Vorgänge: Einfügen, aktualisieren, löschen und auswählen. 3) Fortgeschrittene Operationen: Join-, Unterabfrage- und Transaktionsverarbeitung. 4) Debugging -Fähigkeiten: Syntax, Datentyp und Berechtigungen überprüfen. 5) Optimierungsvorschläge: Verwenden Sie Indizes, vermeiden Sie ausgewählt* und verwenden Sie Transaktionen.

So erstellen Sie eine neue Verbindung zu MySQL in Navicat So erstellen Sie eine neue Verbindung zu MySQL in Navicat Apr 09, 2025 am 07:21 AM

Sie können eine neue MySQL -Verbindung in Navicat erstellen, indem Sie den Schritten folgen: Öffnen Sie die Anwendung und wählen Sie eine neue Verbindung (Strg N). Wählen Sie "MySQL" als Verbindungstyp. Geben Sie die Hostname/IP -Adresse, den Port, den Benutzernamen und das Passwort ein. (Optional) Konfigurieren Sie erweiterte Optionen. Speichern Sie die Verbindung und geben Sie den Verbindungsnamen ein.

So führen Sie SQL in Navicat aus So führen Sie SQL in Navicat aus Apr 08, 2025 pm 11:42 PM

Schritte zur Durchführung von SQL in Navicat: Verbindung zur Datenbank herstellen. Erstellen Sie ein SQL -Editorfenster. Schreiben Sie SQL -Abfragen oder Skripte. Klicken Sie auf die Schaltfläche Ausführen, um eine Abfrage oder ein Skript auszuführen. Zeigen Sie die Ergebnisse an (wenn die Abfrage ausgeführt wird).

Navicat stellt eine Verbindung zu Datenbankfehlercode und Lösung her Navicat stellt eine Verbindung zu Datenbankfehlercode und Lösung her Apr 08, 2025 pm 11:06 PM

Häufige Fehler und Lösungen beim Anschließen mit Datenbanken: Benutzername oder Kennwort (Fehler 1045) Firewall -Blocks -Verbindungsverbindung (Fehler 2003) Timeout (Fehler 10060) Die Verwendung von Socket -Verbindung kann nicht verwendet werden (Fehler 1042).

See all articles