Zusammenfassung der Situationen, in denen MySQL-Indizes nicht verwendet werden

Zusammenfassung der Situationen, in denen MySQL-Indizes nicht verwendet werden

Indextypen in MySQL

Im Allgemeinen können sie in vier Kategorien unterteilt werden:

  • Normaler Index: der gebräuchlichste Index
  • Eindeutiger Index: Der Wert der Indexspalte muss eindeutig sein, Nullwerte sind jedoch zulässig.
  • Primärschlüsselindex: ein spezieller eindeutiger Index, der keine Nullwerte zulässt
  • Gemeinsamer Index: Die Indexspalte hat mehrere Felder und bei ihrer Verwendung muss das Prinzip des am weitesten links stehenden Präfixes eingehalten werden

Normaler Index

Dies ist der grundlegendste Index und es bestehen für ihn keine Einschränkungen. Es kann auf folgende Arten erstellt werden:

1. Erstellen Sie einen Index

Der Code lautet wie folgt:

CREATE INDEX indexName ON mytable(Benutzername(Länge));

Wenn es sich um den Typ CHAR oder VARCHAR handelt, kann die Länge kleiner als die tatsächliche Länge des Felds sein. Wenn es sich um den Typ BLOB oder TEXT handelt, muss die Länge angegeben werden. Gleiches gilt unten.

2. Ändern Sie die Tabellenstruktur

Der Code lautet wie folgt:

ALTER mytable ADD INDEX [indexName] ON (Benutzername(Länge))

Direkt beim Erstellen einer Tabelle angeben

TABELLE ERSTELLEN meineTabelle(
 ID INT NICHT NULL,
 Benutzername VARCHAR(16) NOT NULL,
 INDEX [Indexname] (Benutzername (Länge))
);

Die Syntax zum Löschen eines Indexes lautet:

DROP INDEX [Indexname] ON meineTabelle;

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. Es kann auf folgende Arten erstellt werden:

EINDEUTIGEN INDEX ERSTELLEN indexName ON mytable(Benutzername(Länge))

Ändern Sie die Tabellenstruktur:

ALTER mytable ADD UNIQUE [indexName] ON (Benutzername(Länge))

Geben Sie beim Erstellen einer Tabelle direkt an:

TABELLE ERSTELLEN meineTabelle(  
	ID INT NICHT NULL,  
	Benutzername VARCHAR(16) NOT NULL,  
	UNIQUE [indexName] (Benutzername(Länge))  
);

Primärschlüsselindex

Es handelt sich um einen speziellen eindeutigen Index, der keine Nullwerte zulässt. Im Allgemeinen wird der Primärschlüsselindex beim Erstellen der Tabelle erstellt:

Der Code lautet wie folgt:

TABELLE ERSTELLEN meineTabelle(  
	ID INT NICHT NULL,  
	Benutzername VARCHAR(16) NOT NULL,  
	PRIMÄRSCHLÜSSEL (ID) 
);

Natürlich können Sie auch den ALTER-Befehl verwenden. Denken Sie daran: Eine Tabelle kann nur einen Primärschlüssel haben.

Gemeinsamer Index

Um einspaltige Indizes und zusammengesetzte Indizes visuell zu vergleichen, fügen Sie der Tabelle mehrere Felder hinzu:

TABELLE ERSTELLEN meineTabelle(  
	ID INT NICHT NULL,  
	Benutzername VARCHAR(16) NOT NULL,  
	Stadt VARCHAR(50) NICHT NULL,  
	Alter INT NICHT NULL 
);

Um die Effizienz von MySQL weiter zu steigern, sollten wir die Erstellung eines zusammengesetzten Indexes in Betracht ziehen. Das heißt, Name, Stadt und Alter in einem Index zusammenfassen:

Der Code lautet wie folgt:

ALTER TABLE mytable ADD INDEX name_city_age (Name(10),Stadt,Alter);

Situationen, in denen keine Indizes verwendet werden

Indizes sind möglicherweise nicht immer wirksam. Wenn wir nicht richtig vorgehen, ist es sehr wahrscheinlich, dass anstelle eines Index ein vollständiger Tabellenscan durchgeführt wird. Die Parameter possible_key, key_len und key in Explain können analysieren, ob unsere SQL-Anweisungen Indizes verwenden.

Die folgenden Situationen führen zum Ausfall des Indexes

  1. != wird in der Abfragespalte verwendet, z. B. „select id,name,age from student where id != 2;“
  2. Wenn in der Abfragespalte eine Funktionsoperation verwendet wird, z. B. pow(id,2), um die ID zu quadrieren, wird der Index nicht verwendet.
  3. Wenn die Bedingung ein „oder“ enthält, wird es nicht verwendet, auch wenn einige der Bedingungen Indizes haben (deshalb sollten Sie versuchen, „oder“ so wenig wie möglich zu verwenden).
  4. Auch wenn das Prinzip des am weitesten links stehenden Präfixes im gemeinsamen Index erfüllt ist, wird der Index nicht verwendet, wenn die erste Bedingung eine Bereichsabfrage enthält.
  5. Wenn der Datentyp der Indexspalte implizit konvertiert wird, wird der Index nicht verwendet. Wenn der Spaltentyp beispielsweise ein String ist, müssen die Daten in der Bedingung in Anführungszeichen gesetzt werden, sonst wird der Index nicht verwendet.
  6. Wenn MySQL schätzt, dass ein vollständiger Tabellenscan schneller ist als die Verwendung eines Indexes, wird der Index nicht verwendet.

Mit Explain können Sie testen, ob der Index genutzt wird.

Zusammenfassen

Das Obige ist der vollständige Inhalt dieses Artikels. Ich hoffe, dass der Inhalt dieses Artikels einen gewissen Lernwert für Ihr Studium oder Ihre Arbeit hat. Vielen Dank für Ihre Unterstützung von 123WORDPRESS.COM.

Das könnte Sie auch interessieren:
  • Kenntnisse zur Überwachung der MySQL-Indexnutzung (es lohnt sich, sie zu erwerben!)
  • Detaillierte Erläuterung der MySQL-Zeilensperren beim Auftreten zusammengesetzter Primärschlüssel und mehrspaltiger Indizes
  • Wird der Index in der MySQL-Abfragebedingung verwendet?
  • Beispielanalyse der Auswirkungen des MySQL-Index auf die Sortierung
  • So ändern Sie die IP-Einschränkungsbedingungen des MySQL-Kontos
  • Detaillierte Erläuterung der Einschränkungen und Beschränkungen von MySQL-partitionierten Tabellen
  • MySQL-Abfrageanweisung verwendet Limit, um die Anzahl der abgefragten Zeilen zu begrenzen
  • Lösung für das Problem, dass die MySQL-Verbindungsanzahl das Limit überschreitet
  • Analyse des Prinzips der MySQL-Indexlängenbeschränkung

<<:  WeChat-Applet implementiert Puzzlespiel

>>:  So installieren Sie Docker CE auf Ubuntu 18.04 (Community Edition)

Artikel empfehlen

MySQL-Sortierung mittels Index-Scan

Inhaltsverzeichnis Installieren Sie Sakila Index-...

Unsere Gedanken zur Karriere als UI-Ingenieur

Ich bin seit langer Zeit depressiv, warum? Vor ein...

Beispiel für die Validierung eines JavaScript-Formulars

HTML-Formulare werden häufig verwendet, um Benutz...

So implementieren Sie verteilte Transaktionen in MySQL XA

Inhaltsverzeichnis Vorwort XA-Protokoll So implem...

Praktischer Bericht über die Entwicklung von Vue3- und TypeScript-Projekten

Inhaltsverzeichnis Überblick 1. Kompositions-API ...

Zusammenfassung der benutzerdefinierten JavaScript-Objektmethoden

Inhaltsverzeichnis 1. Verwenden Sie Objekt, um ei...

Einführung in die SSL- und WSS-Schritte für die Nginx-Konfiguration

Inhaltsverzeichnis Vorwort 1. Nginx-Installation ...

mysql 8.0.19 winx64.zip Installations-Tutorial

Dieser Artikel zeichnet das Installationstutorial...

Erfahren Sie, wie Sie Vue3 Reactivity implementieren

Inhaltsverzeichnis Vorwort Start Ein kleiner Geda...

js Canvas realisiert Slider-Verifizierung

In diesem Artikelbeispiel wird der spezifische Co...