So erstellen Sie einen Index für eine Join-Tabelle in MySQL

So erstellen Sie einen Index für eine Join-Tabelle in MySQL

In diesem Artikel wird erläutert, wie Sie einen Index für eine Join-Tabelle erstellen, die zwei Tabellen in MySQL verknüpft. Ich teile ihn zu Ihrer Information. Werfen wir einen Blick auf die ausführliche Einführung:

Problemeinführung

Beim Erstellen eines Datenbankindexes können Sie zwischen einem einspaltigen Index und einem zusammengesetzten Index wählen.

In der folgenden Situation sind die Benutzertabelle (user) und die Abteilungstabelle (dept) über die Abteilungsbenutzerzuordnungstabelle (deptuser) verbunden, wie in der folgenden Abbildung dargestellt:


Beziehungen zwischen Tabellen

Die Frage ist, wie ein Index in dieser Assoziationstabelle erstellt wird.

Für diese Tabelle gibt es vier Optionen:

  • Erstellen Sie einen einzelnen Spaltenindex idx_user für user_uuid
  • Erstellen Sie einen einzelnen Spaltenindex idx_dept für user_dept
  • Erstellen Sie einen zusammengesetzten Index idx_user_dept, d. h. (user_uuid, dept_uuid)
  • Erstellen Sie einen zusammengesetzten Index idx_dept_user, d. h. (dept_uuid, user_uuid)

Es gibt vier Situationen zum Abfragen verknüpfter Tabellen:

-- 1. Überprüfen Sie mit der Methode AND, zu welcher Abteilung eine Person gehört: EXPLAIN SELECT d.dept_name,u.* FROM org_dept d,org_user u,org_dept_user duser WHERE u.user_uuid=duser.user_uuid AND d.dept_uuid=duser.dept_uuid AND u.user_code="dev1";
-- 2. Verwenden Sie die Join-Methode, um zu überprüfen, zu welcher Abteilung das Personal gehört. EXPLAIN SELECT d.dept_name,u.* FROM org_user u LEFT JOIN org_dept_user du ON u.user_uuid=du.user_uuid LEFT JOIN org_dept d ON du.dept_uuid=d.dept_uuid WHERE u.user_code="dev1";
-- 3. Verwenden Sie die AND-Methode, um das Personal nach Abteilung zu überprüfen. EXPLAIN SELECT d.dept_name,u.* FROM org_dept d,org_user u,org_dept_user du WHERE u.user_uuid=du.user_uuid AND d.dept_uuid=du.dept_uuid AND d.dept_code="D006";
-- 4. Verwenden Sie die Join-Methode, um das Personal in der Abteilung zu überprüfen. EXPLAIN SELECT d.dept_name,u.* FROM org_dept d LEFT JOIN org_dept_user du ON d.dept_uuid=du.dept_uuid LEFT JOIN org_user u ON u.user_uuid=du.user_uuid WHERE d.dept_code="D006";

Testüberprüfung

1. Personalprüfungsabteilung mit der und Methode

1.1 Die zugehörige Tabelle hat keinen Index


1.2 Einzelindex Idx_dept


1.3 Einzelindex Idx_user


1.4 Zusammengesetzter Index Idx_dept_user


1.5 Zusammengesetzter Index Idx_user_dept


1.6 Alle gebaut


2. Verwenden Sie die Join-Methode, um die Abteilung zu überprüfen, zu der das Personal gehört

2.1 Die zugehörige Tabelle hat keinen Index

2.2 Einzelindex Idx_dept


2.3 Einzelner Index Idx_user

2.4 Zusammengesetzter Index Idx_dept_user


2.5 Zusammengesetzter Index Idx_user_dept


2.6 Alle sind gebaut


3. Abteilungen verwenden die UND-Methode zur Personalprüfung

3.1 Die zugehörige Tabelle hat keinen Index

3.2 Einzelindex Idx_dept


3.3 Einzelner Index Idx_user


3.4 Zusammengesetzter Index Idx_dept_user


3.5 Zusammengesetzter Index Idx_user_dept


3.6 Alle sind gebaut


4. Abteilungen nutzen join zur Überprüfung ihres Personals

4.1 Kein Index für die zugehörige Tabelle


4.2 Einzelindex Idx_dept


4.3 Einzelner Index Idx_user

4.4 Zusammengesetzter Index Idx_dept_user


4.5 Zusammengesetzter Index Idx_user_dept


4.6 Alle sind gebaut

abschließend

Aus den obigen tatsächlichen Testergebnissen können folgende Schlussfolgerungen gezogen werden: Es ist optimal, für diese Assoziationstabelle einspaltige Indizes idx_user und idx_dept für user_uuid bzw. dept_uuid zu erstellen.

Der Index „idx_user“ ist anwendbar, um die Abteilung einer Person über die Personen-ID abzufragen; der Index „idx_dept“ ist anwendbar, um die Personen unter der Abteilung über die Abteilung abzufragen.

andere

Testdaten

Test.sql

Zusammenfassen

Das Obige ist der vollständige Inhalt dieses Artikels. Ich hoffe, dass der Inhalt dieses Artikels Ihnen bei Ihrem Studium oder Ihrer Arbeit helfen kann. Wenn Sie Fragen haben, können Sie eine Nachricht hinterlassen. Vielen Dank für Ihre Unterstützung von 123WORDPRESS.COM.

Das könnte Sie auch interessieren:
  • MySQL- und Oracle-Datentypkorrespondenz (tabellarische Form)
  • Detaillierte Erklärung zum Erstellen einer Datentabelle in MySQL und zum Herstellen von Primär- und Fremdschlüsselbeziehungen
  • Zusammenfassung der MySQL-Fremdschlüsseleinschränkungen und Tabellenbeziehungen
  • Python speichert Daten vom Typ „dict dictionary“ in MySQL und erstellt automatisch Tabellen und Spalten
  • MySQL und PHP Grundlagen und Anwendungsthemen: Erstellen von Datenbanktabellen
  • So erstellen Sie schnell eine Testdatentabelle mit 8 Millionen Einträgen in MySQL
  • MySQL erstellt in der Praxis drei Beziehungstabellen

<<:  JavaScript zum Implementieren des Vorladens und verzögerten Ladens von Bildern

>>:  Detaillierte Erklärung der Lösung für die Baidu-https-Authentifizierungsaufforderung „Bitte leiten Sie Ihre http-Site 301 auf die https-Site um“

Artikel empfehlen

Zehn Erfahrungen bei der Präsentation chinesischer Webinhalte

<br /> Ich habe mich auf die drei Aspekte Te...

So erstellen Sie eine MySQL-Datenbank (de1) mit Befehlen

1. Verbindung zu MySQL herstellen Format: mysql -...

Mehrere Möglichkeiten, Axios in Vue zu kapseln

Inhaltsverzeichnis Basisversion Schritt 1: Axios ...

Beispielcode einer Vue-Anwendung basierend auf der Axios-Anforderungskapselung

Inhaltsverzeichnis Was ist Axios? Axios-Anforderu...

XHTML-Einführungstutorial: Anwendung von Tabellen-Tags

<br />Tabelle ist ein umständliches Tag in X...

Detaillierte Erklärung der MySQL-Dreiwertelogik und NULL

Inhaltsverzeichnis Was ist NULL Zwei Arten von NU...

So verwalten Sie zwischengespeicherte Seiten in Vue

Inhaltsverzeichnis Problem 1: Zerstörung 1. Wie m...

Vue3 basierend auf der Skript-Setup-Syntax $refs-Verwendung

Inhaltsverzeichnis 1. Vue2-Syntax 2. Nutzung von ...

So implementieren Sie die @person-Funktion über Vue

Dieser Artikel verwendet Vue und fügt Mausklicker...

Detaillierte Erläuterung des Garbage Collection-Mechanismus von JavaScript

Inhaltsverzeichnis Warum brauchen wir Garbage Col...

Ein kurzer Vortrag über JavaScript Sandbox

Vorwort: Apropos Sandboxen: Wir denken vielleicht...