MySql-Index verbessert die Abfragegeschwindigkeit allgemeine Methoden Codebeispiele

MySql-Index verbessert die Abfragegeschwindigkeit allgemeine Methoden Codebeispiele

Verwenden Sie Indizes, um Abfragen zu beschleunigen

1. Einleitung

Bei der Webentwicklung gibt es drei Teile: Geschäftsvorlagen, Geschäftslogik (einschließlich Cache, Verbindungspool) und Datenbank. Die Datenbank ist für die Ausführung von SQL-Abfragen und die Rückgabe von Abfrageergebnissen verantwortlich. Dies ist der wichtigste Leistungsengpass, der sich auf die Website-Geschwindigkeit auswirkt. Dieser Artikel konzentriert sich hauptsächlich auf die MySQL-Datenbank. In Taobaos IOE (I steht für die Abkürzung von IBM, d. h. das Entfernen der Speichergeräte und Minicomputer von IBM; O steht für die Abkürzung von Oracle, d. h. das Entfernen der Oracle-Datenbank, wobei stattdessen MySQL und Hadoop verwendet werden; E steht für EMC2, d. h. das Entfernen der Geräte von EMC2, wobei anstelle von EMC2 ein PC-Server verwendet wird) werden MySQL-Cluster in großem Umfang verwendet! Ein wichtiger Schritt bei der Datenoptimierung ist das Erstellen von Indizes. Bei langsamen Abfragen in MySQL können Sie Indizes verwenden, um die Abfragegeschwindigkeit zu erhöhen. Indizes werden verwendet, um schnell Zeilen zu finden, die einen bestimmten Wert in einer Spalte haben. Ohne Index durchsucht MySQL die gesamte Tabelle, beginnend mit dem ersten Datensatz, und liest dann die gesamte Tabelle, bis es die relevanten Zeilen findet.

2.MySQL-Indextyp und -Erstellung

Indexbezogenes Wissen:

PRI-Primärschlüsseleinschränkung;

UNI eindeutige Einschränkung;

MUL kann wiederholt werden.


Zeigen Sie den Index anmysql> show index from tblname;
mysql> Schlüssel aus Tabellenname anzeigen;
Tisch
Der Name der Tabelle.
Nicht eindeutig
0, wenn der Index keine wiederholten Wörter enthalten kann. 1, wenn möglich.
Schlüsselname
Der Name des Indexes.
Sequenz_im_Index
Die Spaltenfolgenummer im Index, beginnend bei 1.
Spaltenname
Der Spaltenname.
· Sortierung
Wie Spalten im Index gespeichert werden. Dies hat in MySQL die Werte ‚A‘ (aufsteigend) oder NULL (keine Sortierung).
Kardinalität
Eine Schätzung der Anzahl eindeutiger Werte im Index. Es kann durch Ausführen von ANALYZE TABLE oder myisamchk -a aktualisiert werden. Die Kardinalität wird auf Grundlage der als Ganzzahlen gespeicherten Statistiken berechnet, daher ist der Wert selbst bei kleinen Tabellen nicht unbedingt exakt. Je höher die Kardinalität, desto größer ist die Chance, dass MySQL den Index bei einem Join verwendet.
Unterteil
Wenn die Spalte nur teilweise indiziert ist, die Anzahl der indizierten Zeichen. NULL, wenn die gesamte Spalte indiziert ist.
· Verpackt
Gibt an, wie Schlüsselwörter komprimiert werden. Wenn nicht komprimiert, ist dies NULL.
· Null
Enthält JA, wenn die Spalte NULL enthält. Wenn nicht, enthält die Spalte NEIN.
Indextyp
Die verwendete Indexmethode (BTREE, FULLTEXT, HASH, RTREE).
· Kommentar

1). Primärschlüsselindex

Es handelt sich um einen speziellen eindeutigen Index, der keine Nullen zulässt. Im Allgemeinen wird der Primärschlüsselindex gleichzeitig mit der Erstellung der Tabelle erstellt:

CREATE TABLE Benutzer(
id int unsigned ungleich null auto_increment,
Name varchar(50) nicht null,
E-Mail varchar(40) nicht null,
Primärschlüssel (ID)
);

2). Gewöhnlicher Index

Dies ist der grundlegendste Index ohne jegliche Einschränkungen:

Index idx_email für Benutzer erstellen(
E-Mail(20)
);Erstelle Index idx_name für Benutzer(name(20));

MySQL unterstützt Indexpräfixe. Im Allgemeinen sind Namen nicht länger als 20 Zeichen. Daher ist die Länge des Indexes auf 20 Zeichen begrenzt, um die Größe der Indexdatei zu verringern.

3). Eindeutiger Index

Er ähnelt dem vorherigen gewöhnlichen Index, außer dass die Werte der Indexspalte eindeutig sein müssen, aber Nullwerte zulässig sind. Wenn es sich um einen zusammengesetzten Index handelt, muss die Kombination der Spaltenwerte eindeutig sein.

EINDEUTIGEN INDEX ERSTELLEN idx_email ON Benutzer(
E-Mail
);

4). Kombinierter Index

Tabelle sb_man erstellen(
ID int Primärschlüssel auto_increment,
new_name char(30) nicht null,
old_name char(30) nicht null,
Indexname (neuer Name, alter Name)
);# Der Namensindex ist ein Index für new_name und old_name. Abfragemethode: select * from sb_man where new_name='yu'; select * from sb_man where new_name='yu' and old_name='yu1'; Tipp: >>>>>> Der zusammengesetzte Index wird durch das äußerste linke Präfix erstellt. Sie können daher das folgende SQL nicht verwenden: select * from sb_man where old_name='yu1'; <<<< Fehler 

3. Wann werden Indizes verwendet?

1. Indexreferenz

Zusätzlich zur oben erwähnten geordneten Suche verwendet die Datenbank eine Reihe von Technologien zur schnellen Positionierung von Indexspalten, um die Abfrageeffizienz erheblich zu verbessern. Insbesondere wenn die Datenmenge sehr groß ist und die Abfrage mehrere Tabellen umfasst, kann die Verwendung von Indizes die Abfrage oft um das Tausendfache beschleunigen.

Beispielsweise gibt es zwei nicht indizierte Tabellen t1 und t2, die jeweils nur die Spalten c1 und c2 enthalten. Jede Tabelle enthält 1000 Datenzeilen mit einem Wert von 111. Richten Sie dann drei Tabellen mit unterschiedlichen Werten ein.

(Hier verwende ich pymysql zur Ausführung während der Datenerstellung)

Die Abfrage zum Suchen von Zeilen mit gleichen entsprechenden Werten lautet wie folgt.

Um diese Abfrage ohne Index zu verarbeiten, müssen alle Kombinationen der drei Tabellen durchsucht werden, um die Zeilen zu erhalten, die der WHERE-Klausel entsprechen.

wähle c1,c2 aus t1,t2, wobei c1!=c2

Ergebnis Anfragevorgang >>

2. Erstellen Sie einen Index

Sie können einen Index erstellen, wenn Sie die Anweisung CREATE TABLE ausführen, oder Sie können CREATE INDEX oder ALTER TABLE separat verwenden, um einer Tabelle einen Index hinzuzufügen.

1. ALTER TABLE

ALTER TABLE wird verwendet, um einen normalen Index, einen UNIQUE-Index oder einen PRIMARY KEY-Index zu erstellen.

Index löschen: alter table tab_name drop {index|key} index_name;
Tabelle t1 ändern, Index idx_c1 löschen;
Fügen Sie einen Index hinzu: alter table t1 add index idx_c1(c1);
Tabelle t2 ändern, Index idx_c2(c2) hinzufügen;

Abfrageergebnisse Obwohl es sich nutzlos anfühlt. . . Aber das ist das Problem mit Indexabfragen. . .

Das Obige ist der vollständige Inhalt dieses Artikels. Ich hoffe, er wird für jedermanns Studium hilfreich sein. Ich hoffe auch, dass jeder 123WORDPRESS.COM unterstützen wird.

Das könnte Sie auch interessieren:
  • So lösen Sie das Problem der langsamen Geschwindigkeit von MySQL wie bei Fuzzy-Abfragen
  • Ursachen und Lösungen für langsame MySQL-Abfragegeschwindigkeit und schlechte Leistung
  • Optimierung der Abfragegeschwindigkeit von MySQL mit mehreren zehn Millionen Daten mithilfe von Indizes
  • So optimieren Sie die MySQL-Abfragegeschwindigkeit
  • Was ist schneller: MySQL-Volltextindex, gemeinsamer Index, Like-Abfrage und JSON-Abfrage?
  • Einige Methoden zur Optimierung der Abfragegeschwindigkeit bei der Verarbeitung großer Datenmengen durch MySQL
  • So verbessern Sie die Abfragestatistikgeschwindigkeit der MySQL-Datenbank-Auswahlindexanwendung
  • Gründe, warum MySQL-Abfragen langsam sind

<<:  Installieren Sie Tomcat auf dem Linux-System und konfigurieren Sie den Start und das Herunterfahren des Dienstes

>>:  So verwenden Sie Watch-Listener in Vue2 und Vue3

Artikel empfehlen

So ändern Sie das Standardnetzwerksegment der Docker0-Brücke in Docker

1. Hintergrund Wenn der Docker-Dienst gestartet w...

Mit CSS3 erstellter Hintergrundverlaufsanimationseffekt

Ergebnisse erzielen Implementierungscode html <...

So ändern Sie die Zeitzone und die Uhrzeit im Ubuntu-System

Auf einem Linux-Computer gibt es zwei Zeitzonen: ...

Die Tücken der automatischen Inkrementierung numerischer MySQL-Typen

Beim Entwurf von Tabellenstrukturen gehören numer...

Die Darstellung und Öffnungsmethode eines Hyperlinks

<br />Verwandte Artikel: So rufen Sie einen ...

Verständnis für Webdesign-Layout

<br />Hier ergibt sich ein Widerspruch: In k...

Eine ausführliche Einführung in React-Referenzen

1. Was ist Refs wird in Computern als Resilient F...

Ausführliche Erklärung zum Currying von JS-Funktionen

Inhaltsverzeichnis 1. Ergänzende Wissenspunkte: i...

HTML lädt dynamisch CSS-Stile und JS-Skripte – Beispiel

1. Dynamisches Laden von Skripten Mit der wachsen...

Mysql implementiert drei Funktionen zum Feldspleißen

Beim Exportieren von Daten in Operationen ist das...

Tutorial zu XHTML-Webseiten

<br />Dieser Artikel soll Anfängern hauptsäc...