Heim Datenbank MySQL-Tutorial Welche Arten von Indizes gibt es in der MySQL-Datenbank? Gründungsmethoden sowie Vor- und Nachteile

Welche Arten von Indizes gibt es in der MySQL-Datenbank? Gründungsmethoden sowie Vor- und Nachteile

Aug 07, 2018 pm 02:55 PM
mysql索引

Dieser Artikel konzentriert sich auf die Beschreibung der vier Arten von Masql-Datenbankindizes. Wie erstellt man einen Datenbankindex? Spalten, die in WHERE und JOIN erscheinen, müssen indiziert werden, aber nicht vollständig, da MySQL nur Indizes <, <=, =, >, >=, BETWEEN, IN und manchmal LIKE verwendet. Ich hoffe, dieser Artikel kann allen helfen. Lassen Sie uns zunächst verstehen, was ein Index ist. Um es in einem Satz zusammenzufassen: Der Index ist der Schlüssel zur schnellen Suche.

Die Einrichtung eines MySQL-Index ist für den effizienten Betrieb von MySQL sehr wichtig. Im Folgenden werden einige gängige MySQL-Indextypen vorgestellt

In Datenbanktabellen kann die Indizierung von Feldern die Abfragegeschwindigkeit erheblich verbessern. Angenommen, wir erstellen eine Mytable-Tabelle:

Der Code lautet wie folgt:

CREATE TABLE mytable( ID INT NOT NULL, username VARCHAR(16) NOT NULL );

Wir Zufällig Es wurden 10.000 Datensätze eingefügt, darunter einer: 5555, Admin.

Bei der Suche nach dem Datensatz von username="admin" SELECT * FROM mytable WHERE username='admin';, wenn ein Index für username eingerichtet wurde, kann MySQL den Datensatz ohne Scan genau finden. Im Gegenteil, MySQL scannt alle Datensätze, dh es werden 10.000 Datensätze abgefragt.

Indizes werden in einspaltige Indizes und kombinierte Indizes unterteilt. Ein einspaltiger Index bedeutet, dass ein Index nur eine einzige Spalte enthält. Eine Tabelle kann mehrere einspaltige Indizes haben, es handelt sich jedoch nicht um einen kombinierten Index. Kombinierter Index, das heißt, ein Index enthält mehrere Spalten.

Zu den MySQL-Indextypen gehören:

1. Gewöhnlicher Index

Dies ist der einfachste Index, für den es keine Einschränkungen gibt. Es gibt die folgenden Erstellungsmethoden:

1. Erstellen Sie einen Index

Der Code lautet wie folgt:

CREATE INDEX indexName ON mytable(username(length));

Wenn es vom Typ CHAR oder VARCHAR ist, kann die Länge kleiner sein als die tatsächliche Länge des Feldes; wenn es vom Typ BLOB und TEXT ist, muss die Länge angegeben werden, wie unten angegeben.

2. Ändern Sie die Tabellenstruktur

Der Code lautet wie folgt:
ALTER mytable ADD INDEX [indexName] ON (username(length)) -- Direkt angeben

CREATE TABLE mytable( ID INT NOT NULL, username VARCHAR(16) NOT NULL, INDEX [indexName] (username(length)) );

DROP INDEX [indexName] ON mytable;

2. Eindeutiger Index

Er ähnelt dem vorherigen gewöhnlichen Index, außer dass der Wert der Indexspalte ist muss eindeutig sein, ist aber zulässig. Es gibt einen Nullwert. Bei einem zusammengesetzten Index muss die Kombination der Spaltenwerte eindeutig sein. Es verfügt über die folgenden Erstellungsmethoden: Der Code lautet wie folgt:

CREATE UNIQUE INDEX indexName ON mytable(username(length))

--Ändern Sie die Tabellenstruktur

ALTER mytable ADD UNIQUE [indexName] ON (username(length))

-- Geben Sie beim Erstellen der Tabelle direkt

CREATE TABLE mytable an( ID INT NOT NULL, username VARCHAR(16) NOT NULL, UNIQUE [indexName] (username (Länge) );


3. Primärschlüsselindex

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

CREATE TABLE mytable( ID INT NOT NULL, Benutzername VARCHAR(16) NOT NULL, PRIMARY KEY(ID) ) ;

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

4. Kombinierter Index

Um den Einzelspaltenindex und den kombinierten Index anschaulich zu vergleichen, fügen Sie der Tabelle mehrere Felder hinzu: Der Code lautet wie folgt:

CREATE TABLE mytable( ID INT NOT NULL, username VARCHAR(16) NOT NULL, city VARCHAR(50) NOT NULL, age INT NOT NULL );

Um weiterzumachen Um die Effizienz von MySQL zu extrahieren, müssen Sie den Aufbau eines zusammengesetzten Index in Betracht ziehen. Bauen Sie einfach Name, Stadt und Alter in einen Index ein:

Der Code lautet wie folgt:

ALTER TABLE mytable ADD INDEX name_city_age (name(10),city,age);[code]

Bei der Erstellung der Tabelle beträgt die Länge des Benutzernamens 16, hier wird 10 verwendet. Dies liegt daran, dass die Namenslänge im Allgemeinen 10 nicht überschreitet, was die Indexabfrage beschleunigt, die Größe der Indexdatei verringert und die Aktualisierungsgeschwindigkeit von INSERT verbessert.

Wenn Sie jeweils einspaltige Indizes für Benutzername, Stadt und Alter erstellen, sodass die Tabelle über drei einspaltige Indizes verfügt, unterscheidet sich die Abfrageeffizienz stark vom oben genannten kombinierten Index, der weitaus geringer ist als unser kombinierter Index. Obwohl es derzeit drei Indizes gibt, kann MySQL nur den einspaltigen Index verwenden, der seiner Meinung nach am effizientesten ist.


Die Erstellung eines solchen kombinierten Index entspricht tatsächlich der Erstellung der folgenden drei Sätze kombinierter Indizes:

Benutzername, Stadt, Alter Benutzername, Stadt Benutzername Warum gibt es keinen kombinierten Index wie Stadt, Alter? Dies ist auf das „ganz linke Präfix“ des MySQL-Verbundindex zurückzuführen. Das einfache Verständnis besteht darin, die Kombination nur ganz links zu beginnen. Nicht nur Abfragen, die diese drei Spalten enthalten, verwenden diesen kombinierten Index, sondern auch die folgende SQL verwendet diesen kombinierten Index:
[code]
SELECT * FROM mytable WHREE username="admin" AND city ="Zhengzhou" SELECT * FROM mytable WHREE username="admin"

Die folgenden werden nicht verwendet:

Der Code lautet wie folgt:
SELECT * FROM mytable WHREE age=20 AND city="Zhengzhou" SELECT * FROM mytable WHREE city="Zhengzhou"

5. So erstellen Sie einen Index

Bis hierher haben wir gelernt, wie man einen Index erstellt, dann wir Unter welchen Umständen müssen Sie einen Index erstellen? Im Allgemeinen müssen Spalten, die in WHERE und JOIN erscheinen, indiziert werden, aber das ist nicht ganz richtig, da MySQL nur <, <=, =, >, >=, BETWEEN, IN indiziert und manchmal LIKE verwendet Index. Zum Beispiel:

Der Code lautet wie folgt:

SELECT t.Name FROM mytable t LEFT JOIN mytable m ON t.Name=m.username WHERE m.age=20 AND m.city ='Zhengzhou'

Zu diesem Zeitpunkt ist es notwendig, Stadt und Alter zu indizieren. Da der Benutzername der Mytable-Tabelle auch in der JOIN-Klausel erscheint, ist es auch notwendig, ihn zu indizieren.

Ich habe gerade erwähnt, dass LIKE nur zu bestimmten Zeiten indiziert werden muss. Weil MySQL den Index nicht verwendet, wenn Abfragen mit den Platzhalterzeichen % und _ beginnen. Beispielsweise verwendet der folgende Satz den Index:

Der Code lautet wie folgt:
SELECT * FROM mytable WHERE username like'admin%'
Der nächste Satz verwendet nicht den Index:

Der Code lautet wie folgt:

SELECT * FROM mytable WHEREt Name like'%admin'

Daher sollten Sie bei der Verwendung von LIKE auf die oben genannten Unterschiede achten.

6. Nachteile von Indizes

Das oben Genannte spricht von den Vorteilen der Verwendung von Indizes, aber eine übermäßige Verwendung von Indizes führt zu Missbrauch. Daher hat der Index auch seine Nachteile:

1 Obwohl der Index die Abfragegeschwindigkeit erheblich verbessert, verringert er auch die Geschwindigkeit der Aktualisierung der Tabelle, z. B. INSERT, UPDATE und DELETE in der Tabelle. Denn beim Aktualisieren der Tabelle muss MySQL nicht nur die Daten, sondern auch die Indexdatei speichern.

2. Das Erstellen von Indexdateien belegt Speicherplatz. Im Allgemeinen ist dieses Problem nicht schwerwiegend. Wenn Sie jedoch mehrere kombinierte Indizes für eine große Tabelle erstellen, wird die Indexdatei schnell erweitert.

Indizes sind nur ein Faktor zur Verbesserung der Effizienz. Wenn Ihr MySQL über eine große Menge an Datentabellen verfügt, müssen Sie Zeit damit verbringen, die besten Indizes zu recherchieren und zu erstellen oder Abfrageanweisungen zu optimieren.

7. Dinge, die Sie bei der Verwendung von Indizes beachten sollten:

Bei der Verwendung von Indizes gibt es die folgenden Tipps und Vorsichtsmaßnahmen:

1 nicht enthalten Spalten mit NULL-Werten

werden nicht in den Index aufgenommen, solange die Spalte NULL-Werte enthält. Solange eine Spalte im zusammengesetzten Index einen NULL-Wert enthält, ist diese Spalte ungültig für den zusammengesetzten Index. Daher sollten wir beim Entwerfen der Datenbank nicht zulassen, dass der Standardwert des Felds NULL ist.

2. Verwenden Sie den Kurzindex

, um die Zeichenfolge zu indizieren, und wenn möglich sollte eine Präfixlänge angegeben werden. Wenn Sie beispielsweise eine CHAR(255)-Spalte haben und die meisten Werte innerhalb der ersten 10 oder 20 Zeichen eindeutig sind, indizieren Sie nicht die gesamte Spalte. Kurze Indizes verbessern nicht nur die Abfragegeschwindigkeit, sondern sparen auch Speicherplatz und E/A-Vorgänge.

3. Indexspaltensortierung

MySQL-Abfrage verwendet nur einen Index. Wenn der Index also in der where-Klausel verwendet wurde, verwenden die Spalten in der Reihenfolge nach nicht den Index. Verwenden Sie daher keine Sortiervorgänge, wenn die Standardsortierung der Datenbank die Anforderungen erfüllen kann. Versuchen Sie, die Sortierung mehrerer Spalten zu vermeiden. Bei Bedarf ist es am besten, zusammengesetzte Indizes für diese Spalten zu erstellen.

4. Like-Anweisungsoperation

Im Allgemeinen wird die Verwendung einer Like-Operation nicht empfohlen. Wenn sie verwendet werden muss, ist auch die Verwendung problematisch. „%aaa%“ verwendet nicht den Index, aber „aaa%“ verwendet den Index.

5. Bearbeiten Sie keine Spalten.

Der Code lautet wie folgt:
Wählen Sie * aus den Benutzern aus, in denen sich YEAR(adddate)<2007;

befindet Jede Zeile führt dazu, dass der Index fehlschlägt und ein vollständiger Tabellenscan durchgeführt wird, sodass wir ihn wie folgt ändern können:

Der Code lautet wie folgt:

Wählen Sie * aus Benutzern aus, bei denen das Datum adddate<'2007 ist -01-01' ;

6. Verwenden Sie keine NOT IN- und <>-Operationen.

Oben werden die MySQL-Indextypen vorgestellt. Ich hoffe, es hilft allen.

Zwei Methoden der Indizierung:

B-Tree-Index

Hinweis: Es wird als Btree-Index bezeichnet, der ein ist Großer Aspekt Schauen Sie, sie verwenden alle ausgewogene Bäume, aber in Bezug auf die spezifische Implementierung unterscheidet sich jede Speicher-Engine geringfügig. Genau genommen verwendet die NDB-Engine beispielsweise T-Tree
Myisam und in Innodb den B-Tree-Index wird standardmäßig verwendet. Die theoretische Abfragezeitkomplexität des B-Baums beträgt O(log2 (N-1)), N ist die Anzahl der Zeilen in der Datentabelle

Hash-Index
Für Tabellen mit Speicher-Speicher-Engine, der Standardwert ist Hash. Die theoretische Abfragezeitkomplexität von Index und Hash beträgt O(1)

Verwandte Empfehlungen:

Detaillierte Erläuterung der Verwendung der MySQL-Indizierung und -Analyse von Vor- und Nachteilen

Vor- und Nachteile der Indexierung von Seite 1/2

Das obige ist der detaillierte Inhalt vonWelche Arten von Indizes gibt es in der MySQL-Datenbank? Gründungsmethoden sowie Vor- und Nachteile. 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)
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Beste grafische Einstellungen
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. So reparieren Sie Audio, wenn Sie niemanden hören können
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Wie man alles in Myrise freischaltet
4 Wochen 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)

Mehrere Situationen, in denen ein MySQL-Index fehlschlägt Mehrere Situationen, in denen ein MySQL-Index fehlschlägt Feb 21, 2024 pm 04:23 PM

Häufige Situationen: 1. Verwenden Sie Funktionen oder Operationen; 3. Verwenden Sie ungleich (!= oder <>); Wert; 7. Niedrige Indexselektivität; 8. Prinzip des zusammengesetzten Indexes; 9. Optimierer-Entscheidung;

Unter welchen Umständen schlägt der MySQL-Index fehl? Unter welchen Umständen schlägt der MySQL-Index fehl? Aug 09, 2023 pm 03:38 PM

MySQL-Indizes schlagen fehl, wenn Abfragen ohne Verwendung von Indexspalten, nicht übereinstimmenden Datentypen, falscher Verwendung von Präfixindizes, Verwendung von Funktionen oder Ausdrücken für Abfragen, falscher Reihenfolge von Indexspalten, häufigen Datenaktualisierungen und zu vielen oder zu wenigen Indizes erfolgen. 1. Verwenden Sie keine Indexspalten für Abfragen. 2. Bei der Gestaltung der Tabellenstruktur sollten Sie darauf achten, dass die Indexspalten übereinstimmen 3. Bei unsachgemäßer Verwendung des Präfixindex können Sie den Präfixindex verwenden.

MySQL-Index-Linkspräfix-Matching-Regeln MySQL-Index-Linkspräfix-Matching-Regeln Feb 24, 2024 am 10:42 AM

Prinzip des MySQL-Index ganz links: Prinzip und Codebeispiele In MySQL ist die Indizierung eines der wichtigsten Mittel zur Verbesserung der Abfrageeffizienz. Unter diesen ist das Indexprinzip ganz links ein wichtiges Prinzip, das wir befolgen müssen, wenn wir Indizes zur Optimierung von Abfragen verwenden. In diesem Artikel wird das Prinzip des MySQL-Index ganz links vorgestellt und einige spezifische Codebeispiele gegeben. 1. Das Prinzip des Index-Prinzips ganz links Das Prinzip des Index ganz links bedeutet, dass in einem Index, wenn die Abfragebedingung aus mehreren Spalten besteht, nur die Spalte ganz links im Index abgefragt werden kann, um die Abfragebedingungen vollständig zu erfüllen.

Was sind die Klassifizierungen von MySQL-Indizes? Was sind die Klassifizierungen von MySQL-Indizes? Apr 22, 2024 pm 07:12 PM

MySQL-Indizes werden in die folgenden Typen unterteilt: 1. Gewöhnlicher Index: Übereinstimmung mit Wert, Bereich oder Präfix; 2. Eindeutiger Index: Stellt sicher, dass der Wert eindeutig ist. 3. Primärschlüsselindex: Eindeutiger Index der Primärschlüsselspalte Schlüsselindex: zeigt auf den Primärschlüssel einer anderen Tabelle; 5. Volltextindex: Suche nach gleicher Übereinstimmung; 8. Zusammengesetzter Index: Suche basierend auf mehreren Säulen.

Erklären Sie verschiedene Arten von MySQL-Indizes (B-Tree, Hash, Volltext, räumlich). Erklären Sie verschiedene Arten von MySQL-Indizes (B-Tree, Hash, Volltext, räumlich). Apr 02, 2025 pm 07:05 PM

MySQL unterstützt vier Indextypen: B-Tree, Hash, Volltext und räumlich. 1.B-Tree-Index ist für die gleichwertige Suche, eine Bereichsabfrage und die Sortierung geeignet. 2. Hash -Index ist für gleichwertige Suche geeignet, unterstützt jedoch keine Abfrage und Sortierung von Bereichs. 3. Die Volltextindex wird für die Volltext-Suche verwendet und ist für die Verarbeitung großer Mengen an Textdaten geeignet. 4. Der räumliche Index wird für die Abfrage für Geospatial -Daten verwendet und ist für GIS -Anwendungen geeignet.

Strategien zur Leistungsoptimierung für die Datenaktualisierung und Indexpflege von PHP- und MySQL-Indizes und deren Auswirkungen auf die Leistung Strategien zur Leistungsoptimierung für die Datenaktualisierung und Indexpflege von PHP- und MySQL-Indizes und deren Auswirkungen auf die Leistung Oct 15, 2023 pm 12:15 PM

Strategien zur Leistungsoptimierung für die Datenaktualisierung und Indexpflege von PHP- und MySQL-Indizes und deren Auswirkungen auf die Leistung. Zusammenfassung: In der Entwicklung von PHP und MySQL sind Indizes ein wichtiges Werkzeug zur Optimierung der Datenbankabfrageleistung. In diesem Artikel werden die Grundprinzipien und die Verwendung von Indizes vorgestellt und die Auswirkungen von Indizes auf die Leistung bei der Datenaktualisierung und -wartung untersucht. Gleichzeitig bietet dieser Artikel auch einige Strategien zur Leistungsoptimierung und spezifische Codebeispiele, um Entwicklern zu helfen, Indizes besser zu verstehen und anzuwenden. Grundprinzipien und Verwendung von Indizes In MySQL ist ein Index eine spezielle Zahl

Wie kann man MySQL-Indizes rational nutzen und die Datenbankleistung optimieren? Designprotokolle, die Technikstudenten kennen müssen! Wie kann man MySQL-Indizes rational nutzen und die Datenbankleistung optimieren? Designprotokolle, die Technikstudenten kennen müssen! Sep 10, 2023 pm 03:16 PM

Wie kann man MySQL-Indizes rational nutzen und die Datenbankleistung optimieren? Designprotokolle, die Technikstudenten kennen müssen! Einleitung: Im heutigen Internetzeitalter wächst die Datenmenge weiter und die Optimierung der Datenbankleistung ist zu einem sehr wichtigen Thema geworden. Als eine der beliebtesten relationalen Datenbanken ist die rationelle Nutzung von Indizes durch MySQL von entscheidender Bedeutung für die Verbesserung der Datenbankleistung. In diesem Artikel erfahren Sie, wie Sie MySQL-Indizes rational nutzen, die Datenbankleistung optimieren und einige Designregeln für Technikstudenten bereitstellen. 1. Warum Indizes verwenden? Ein Index ist eine Datenstruktur, die verwendet

Wann könnte ein vollständiger Tabellen -Scan schneller sein als einen Index in MySQL? Wann könnte ein vollständiger Tabellen -Scan schneller sein als einen Index in MySQL? Apr 09, 2025 am 12:05 AM

Die volle Tabellenscannung kann in MySQL schneller sein als die Verwendung von Indizes. Zu den spezifischen Fällen gehören: 1) das Datenvolumen ist gering; 2) Wenn die Abfrage eine große Datenmenge zurückgibt; 3) wenn die Indexspalte nicht sehr selektiv ist; 4) Wenn die komplexe Abfrage. Durch Analyse von Abfrageplänen, Optimierung von Indizes, Vermeidung von Überindex und regelmäßiger Wartung von Tabellen können Sie in praktischen Anwendungen die besten Auswahlmöglichkeiten treffen.

See all articles