Heim  >  Artikel  >  Datenbank  >  Worauf bezieht sich die MySQL-Tabellenrückgabe?

Worauf bezieht sich die MySQL-Tabellenrückgabe?

王林
王林nach vorne
2023-06-01 22:46:043122Durchsuche

Einführung

Einfach ausgedrückt bedeutet die Tabellenrückgabe, dass MySQL zuerst den Primärschlüsselindex abfragen und dann den Primärschlüsselindex verwenden muss, um die Daten zu lokalisieren.

Nachfolgend analysieren und beantworten wir einige Fragen:

  • Was ist ein Clustered-Index? Was ist ein nicht gruppierter Index?

  • Warum müssen wir zuerst den Primärschlüsselindex nachschlagen, wenn wir eine Tabelle zurückgeben?

  • Was ist der Unterschied zwischen Primärschlüsselindex und Nicht-Primärschlüsselindex?

  • Wie vermeide ich die Rückgabe des Formulars?

Was sind Clustered-Index und Non-Clustered-Index?

MySQL-Indizes werden aus verschiedenen Perspektiven klassifiziert, z. B. nach Datenstruktur, nach logischer Perspektive und nach physischem Speicher.

Unter diesen gibt es zwei Arten von Indizes, die auf physischer Speicherung basieren: Clustered-Index und Nicht-Clustered-Index.

Einfach ausgedrückt ist Clustered Index ein Primärschlüsselindex.

Neben dem Primärschlüsselindex wird der nicht gruppierte Index auch als Hilfsindex oder Sekundärindex bezeichnet.

Was ist der Unterschied zwischen Primärschlüsselindex und Nicht-Primärschlüsselindex?

Gleiche Punkte: Beide verwenden B+Tree.

Unterschiede: Blattknoten speichern unterschiedliche Daten. Die Blattknoten des Primärschlüsselindex speichern eine vollständige Datenzeile Schlüsselwert . Der Blattknoten enthält nicht alle Daten des Datensatzes. Zusätzlich zum zum Sortieren verwendeten Schlüssel enthält der Nicht-Primärschlüssel-Blattknoten auch ein Lesezeichen (Lesezeichen), in dem der Schlüssel des Clustered-Index gespeichert ist.

  • Was sind also die Unterschiede in der Verwendung zwischen diesen beiden Indizes?

    Abfrage mit Primärschlüsselindex:
  • # 主键索引的的叶子节点存储的是**一行完整的数据**,
    # 所以只需搜索主键索引的 B+Tree 就可以轻松找到全部数据
    select * from user where id = 1;

    Abfrage mit Nicht-Primärschlüsselindex:

    # 非主键索引的叶子节点存储的是**主键值**,
    # 所以MySQL会先查询到 name 列的索引的 B+Tree,搜索得到对应的主键值
    # 然后再去搜索该主键值查询主键索引的 B+Tree 才可以找到对应的数据
    select * from user where name = 'Jack';
  • Es ​​ist ersichtlich, dass bei Verwendung eines Nicht-Primärschlüsselindex ein B+Baum mehr als beim Primärschlüsselindex verwendet wird.

Ein einfaches Verständnis von B-Tree und B+Tree

Der Schlüssel zum Verständnis von Clustered-Indizes und Nicht-Clustered-Indizes liegt im Verständnis von B+Tree.

Verwenden Sie ein Bild zur Darstellung, der Rest wird nicht zu viel erklärt:

Hier ist nur eine kurze Einführung in den Unterschied zwischen B-Tree und B+Tree:

In Nur B+Tree-Blattknoten haben Zeiger auf Datensätze, während alle Knoten im B-Baum Zeiger haben und Indexelemente, die in internen Knoten erscheinen, nicht mehr in Blattknoten erscheinen.

Worauf bezieht sich die MySQL-Tabellenrückgabe?Alle Blattknoten im B+-Baum sind durch Zeiger miteinander verbunden, während dies beim B-Baum nicht der Fall ist.

Wie vermeide ich die Rückgabe des Formulars?

    Verwenden Sie einen abdeckenden Index.
  • Der sogenannte abdeckende Index bedeutet, dass der Index alle Felder in der Abfrage enthält. In diesem Fall ist keine Abfrage zurück zur Tabelle erforderlich.

Das obige ist der detaillierte Inhalt vonWorauf bezieht sich die MySQL-Tabellenrückgabe?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:yisu.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen