Heim Datenbank MySQL-Tutorial Was ist ein MySQL-Index? Einführung in verwandte Kenntnisse des MySQL-Index

Was ist ein MySQL-Index? Einführung in verwandte Kenntnisse des MySQL-Index

Dec 29, 2018 am 11:32 AM
mysql mysql索引

Der Inhalt dieses Artikels befasst sich mit der Frage, was ein MySQL-Index ist. Die Einführung relevanter Kenntnisse über den MySQL-Index hat einen gewissen Referenzwert. Freunde in Not können sich darauf beziehen.

Was ist ein Index?

Ein Index ist wie das Inhaltsverzeichnis eines Buches

Um eine Zeile mit einem bestimmten Wert in einer Spalte zu finden, muss MySQL die gesamte Tabelle beginnend mit dem ersten Datensatz lesen, bis die entsprechende Zeile gefunden wird Zeit, die zum Abfragen der Daten benötigt wird. Wenn die abgefragte Spalte in der Tabelle über einen Index verfügt, kann MySQL schnell zu einem Speicherort gelangen, an dem die Datendatei durchsucht werden muss, was viel Zeit spart.

Vorteile und Nachteile

Vorteile

1. Beschleunigt die Abfrage erheblich

2. Alle Feldtypen können indiziert werden

Nachteile

1. Je mehr Daten, desto zeitaufwändiger.

2 Außerdem gibt es eine maximale Online-Einstellung. Wenn wir eine große Anzahl von Indizes haben, erreicht die Indexdatei möglicherweise schneller den Online-Wert als die Datendatei.

3. Wenn Sie Daten in der Tabelle hinzufügen, löschen oder ändern, Der Index benötigt auch eine dynamische Wartung, die die Geschwindigkeit der Datenpflege verringert

Nutzungsprinzipien und -szenarien

1 Je mehr Indizes, desto besser, es kommt auf die Situation an

2. Tabellen, die häufig aktualisiert werden, sollten so wenige Indizes wie möglich haben

3. Erstellen Sie Indizes für Felder, die häufig für Abfragen verwendet werden

4 mit kleinen Datenmengen. Der Zeitaufwand für Daten ist kürzer als für das Durchlaufen der Indexdaten, und der Index hat keinen Optimierungseffekt

5. Versuchen Sie, keine Indizes für Felder mit wenigen unterschiedlichen Werten zu verwenden , wie zum Beispiel das Geschlechtsfeld, das nur zwei unterschiedliche Werte für Männer und Frauen hat.

Indexklassifizierung

Hinweis: Die Indizierung ist in der Speicher-Engine implementiert, was bedeutet, dass verschiedene Speicher-Engines unterschiedliche Indizes verwenden

MyISAM- und InnoDB-Speicher Engines: unterstützen nur BTREE-Indizes, was bedeutet, dass BTREE standardmäßig verwendet wird und nicht ersetzt werden kann

MEMORY/HEAP-Speicher-Engines: unterstützt HASH- und BTREE-Indizes

1 🎜>

Ein Index enthält nur eine einzelne Spalte, aber es kann mehrere einspaltige Indizes in einer Tabelle geben

1.1 Gewöhnlicher Index

Grundlegender Indextyp in MySQL, Nein Welche Einschränkungen sind zulässig, um doppelte Werte und Nullwerte in die Spalten einzufügen, in denen der Index definiert ist, nur um die Daten schneller abzufragen?

1.2. Eindeutiger Index

Der Wert in der Indexspalte muss eindeutig sein, aber Nullwerte sind zulässig

1.3 Primärschlüsselindex

ist ein spezieller eindeutiger Index, es sind keine Nullwerte zulässig

2 Kombinierter Index

Ein Index, der nur für eine Kombination mehrerer Felder in der Tabelle erstellt wurde Die Abfragebedingungen Der Index wird nur verwendet, wenn das linke Feld dieser Felder verwendet wird. Befolgen Sie bei Verwendung des kombinierten Indexes die beste linke Präfixregel

3 🎜>Volltextindex. Er kann nur auf der MyISAM-Engine verwendet werden, und Volltextindizes können nur für Felder vom Typ CHAR, VARCHAR und TEXT verwendet werden. Volltextindex bedeutet, dass Sie in einem Textstapel die Datensatzzeile, zu der das Feld gehört, über ein bestimmtes Schlüsselwort finden können, z. B. „Sie sind ein großer schlechter Stift, eine zweitklassige Person …“ Durch das großer schlechter Stift, es könnte möglich sein, den Datensatz zu finden

4. Räumlicher Index

Ein räumlicher Index ist ein Index, der auf Feldern räumlicher Datentypen basiert. Es gibt vier räumliche Datentypen in MySQL, GEOMETRY, POINT, LINESTRING, POLYGON. Verwenden Sie beim Erstellen eines räumlichen Index das Schlüsselwort SPATIAL. Anforderungen: Die Engine ist MyISAM. Die zum Erstellen eines räumlichen Index verwendete Spalte muss als NOT NULL deklariert werden.

Indexmodus

Verwendungsprinzip: Wenn die Werte unterschiedlich sind ​​ist groß und basiert hauptsächlich auf der Suche nach gleichen Werten (=, <=>, in). Der Hash-Index ist eine effizientere Wahl und weist eine Suchkomplexität von O(1) auf, wenn die Wertedifferenz relativ ist schlecht und die Bereichssuche ist hauptsächlich B-Tree die bessere Wahl, da er die Bereichssuche unterstützt.

B-Tree-Index

Der B-Tree-Index verfügt über die Funktionen der Bereichssuche und Präfixsuche. Für einen B-Baum mit N Knoten beträgt die Komplexität des Abrufens eines Datensatzes O(LogN). . Entspricht der binären Suche.

Hash-Index

Hash-Index kann nur eine gleiche Suche durchführen, aber egal wie groß die Hash-Tabelle ist, die Suchkomplexität ist O(1).

Indexerstellung und -löschung

Erstellen

Erstellen beim Erstellen einer Tabelle

CREATE TABLE 表名[字段名 数据类型]  [UNIQUE|FULLTEXT|SPATIAL|...] [INDEX|KEY] [索引名字] (字段名[length])   [ASC|DESC]
Nach dem Login kopieren
Beispiel:

CREATE TABLE `NewTable` (
    `id` INT NOT NULL AUTO_INCREMENT,
    `username` VARCHAR (255) NOT NULL,
    `name` VARCHAR (255) NOT NULL,
    `sex` TINYINT NOT NULL DEFAULT 0,
    `address` VARCHAR (255) NULL,
    PRIMARY KEY (`id`), # 主键索引
    INDEX `name` (`name`) USING BTREE, # 普通索引
    UNIQUE INDEX `username` (`username`) USING BTREE # 唯一索引
    INDEX `u_n_a` (`username`,    `name`,`address`) USING BTREE # 组合索引
);
Nach dem Login kopieren

Vorhandene Tabellenerstellung

ALTER TABLE 表名 ADD[UNIQUE|FULLTEXT|SPATIAL] [INDEX|KEY] [索引名] (索引字段名)[ASC|DESC]
Nach dem Login kopieren
Beispiel:
ALTER TABLE `test`
ADD PRIMARY KEY (`id`),  # 主键索引
ADD INDEX `name` (`name`) USING BTREE , # 普通索引
ADD UNIQUE INDEX `username` (`username`) USING BTREE , # 唯一索引
ADD INDEX `u_n_a` (`username`, `name`, `address`) USING BTREE ; # 组合索引
Nach dem Login kopieren

Index löschen

ALTER TABLE 表名 DROP INDEX 索引名。
Nach dem Login kopieren
Beispiel:
ALTER TABLE `test`
DROP PRIMARY KEY,
DROP INDEX `username`,
DROP INDEX `name`,
DROP INDEX `u_n_a`;
Nach dem Login kopieren

Index aktualisieren

Zuerst löschen und dann erstellen

ALTER TABLE `test`
DROP INDEX `username` ,
ADD UNIQUE INDEX `username1` (`username`) USING BTREE ,
DROP INDEX `name` ,
ADD INDEX `name2` (`name`) USING BTREE ,
DROP INDEX `u_n_a` ,
ADD INDEX `u_a_n` (`username`, `address`, `name`) USING BTREE ;
Nach dem Login kopieren

Indexfehlerbedingungen

1. Kombinierte Felder folgen nicht dem optimalen linken Präfix Regel

2. Fuzzy-Abfrage, z. B. „%test“

# 索引生效
select * from `test` where `name` like "123";
# 索引生效
select * from `test` where `name` like "123%";
# 索引失效
select * from `test` where `name` like "%123";
# 索引失效
select * from `test` where `name` like "%123%";
Nach dem Login kopieren

3. 在索引列上做如下任何操作(计算,函数,(自动或者手动)类型装换),会导致索引失效而导致全表扫描

如 sex 字段上添加索引

# 索引失效
select * from `test` where `sex`*0.5  = 1
Nach dem Login kopieren

4. 范围索引(>,<,between and)后,无法命中组合索引右边的列

构建索引

ALTER TABLE `test`
ADD INDEX `s_n` (`sex`, `name`) USING BTREE ;
Nach dem Login kopieren

示例:

# 命中全部
select * from `test` where `sex` = 1 and `name` = &#39;a&#39;;
# 命中部分,sex命中,name失效
select * from `test` where `sex` > 1 and `name` = 'a';</p>
<p style="white-space: normal;">5. !=, is null, is not null 无法使用索引</p>
<p style="white-space: normal;">6. 字符串字段的值不加单引号(数字不报错,英文报错)索引失效</p>
<p>构建索引</p>
<pre class="brush:php;toolbar:false">ALTER TABLE `test`
ADD INDEX `name` (`name`) USING BTREE ;
Nach dem Login kopieren

示例

# 索引失效
select * from `test` where `name`  =  123;
# 索引生效
select * from `test` where `name`  =  '123';
Nach dem Login kopieren

7. or 条件导致索引失效

构建索引

ALTER TABLE `test`
ADD INDEX `sex` (`sex`) USING BTREE ;
ADD INDEX `n_u` (`name`, `username`) USING BTREE ;
Nach dem Login kopieren

示例:

# 索引不生效
select * from `test` where (`name` = 'aa' and `username` = 'aa') or `sex` > 1 
# 索引sex生效
select * from `test` where `sex` = 1 and (`id` = 2 or `name` = 'aa' )
Nach dem Login kopieren

附录

最佳左前缀法则

如果索引了多列,要遵守最左前缀法则。指的是查询要从索引的最左前列开始并且不跳过索引中的列

如下构建索引

ALTER TABLE `test` ADD INDEX `u_a_n` (`username`, `address`, `name`) USING BTREE ;
Nach dem Login kopieren

如下查询情况

# 命中部分
select * from `test` where `username` = 'aaa';
# 命中部分
select * from `test` where `username` = 'aa' and `address` = 'aaa';
# 全命中
select * from `test` where `username` = 'aa' and `address` = 'aaa' and `name` = 'a';
# 不命中,第一条件字段不是username
select * from `test` where  `address` = 'aaa';
Nach dem Login kopieren

Das obige ist der detaillierte Inhalt vonWas ist ein MySQL-Index? Einführung in verwandte Kenntnisse des MySQL-Index. 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ß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)

MySQL: Einfache Konzepte für einfaches Lernen MySQL: Einfache Konzepte für einfaches Lernen Apr 10, 2025 am 09:29 AM

MySQL ist ein Open Source Relational Database Management System. 1) Datenbank und Tabellen erstellen: Verwenden Sie die Befehle erstellte und creatEtable. 2) Grundlegende Vorgänge: Einfügen, aktualisieren, löschen und auswählen. 3) Fortgeschrittene Operationen: Join-, Unterabfrage- und Transaktionsverarbeitung. 4) Debugging -Fähigkeiten: Syntax, Datentyp und Berechtigungen überprüfen. 5) Optimierungsvorschläge: Verwenden Sie Indizes, vermeiden Sie ausgewählt* und verwenden Sie Transaktionen.

Wie man phpmyadmin öffnet Wie man phpmyadmin öffnet Apr 10, 2025 pm 10:51 PM

Sie können PhpMyAdmin in den folgenden Schritten öffnen: 1. Melden Sie sich beim Website -Bedienfeld an; 2. Finden und klicken Sie auf das Symbol phpmyadmin. 3. Geben Sie MySQL -Anmeldeinformationen ein; 4. Klicken Sie auf "Login".

MySQL: Eine Einführung in die beliebteste Datenbank der Welt MySQL: Eine Einführung in die beliebteste Datenbank der Welt Apr 12, 2025 am 12:18 AM

MySQL ist ein Open Source Relational Database Management -System, das hauptsächlich zum schnellen und zuverlässigen Speicher und Abrufen von Daten verwendet wird. Sein Arbeitsprinzip umfasst Kundenanfragen, Abfragebedingungen, Ausführung von Abfragen und Rückgabergebnissen. Beispiele für die Nutzung sind das Erstellen von Tabellen, das Einsetzen und Abfragen von Daten sowie erweiterte Funktionen wie Join -Operationen. Häufige Fehler umfassen SQL -Syntax, Datentypen und Berechtigungen sowie Optimierungsvorschläge umfassen die Verwendung von Indizes, optimierte Abfragen und die Partitionierung von Tabellen.

Warum MySQL verwenden? Vorteile und Vorteile Warum MySQL verwenden? Vorteile und Vorteile Apr 12, 2025 am 12:17 AM

MySQL wird für seine Leistung, Zuverlässigkeit, Benutzerfreundlichkeit und Unterstützung der Gemeinschaft ausgewählt. 1.MYSQL bietet effiziente Datenspeicher- und Abruffunktionen, die mehrere Datentypen und erweiterte Abfragevorgänge unterstützen. 2. Übernehmen Sie die Architektur der Client-Server und mehrere Speichermotoren, um die Transaktion und die Abfrageoptimierung zu unterstützen. 3. Einfach zu bedienend unterstützt eine Vielzahl von Betriebssystemen und Programmiersprachen. V.

So verwenden Sie ein einzelnes Gewinde -Redis So verwenden Sie ein einzelnes Gewinde -Redis Apr 10, 2025 pm 07:12 PM

Redis verwendet eine einzelne Gewindearchitektur, um hohe Leistung, Einfachheit und Konsistenz zu bieten. Es wird E/A-Multiplexing, Ereignisschleifen, nicht blockierende E/A und gemeinsame Speicher verwendet, um die Parallelität zu verbessern, jedoch mit Einschränkungen von Gleichzeitbeschränkungen, einem einzelnen Ausfallpunkt und ungeeigneter Schreib-intensiver Workloads.

MySQL und SQL: Wesentliche Fähigkeiten für Entwickler MySQL und SQL: Wesentliche Fähigkeiten für Entwickler Apr 10, 2025 am 09:30 AM

MySQL und SQL sind wesentliche Fähigkeiten für Entwickler. 1.MYSQL ist ein Open -Source -Relational Database Management -System, und SQL ist die Standardsprache, die zum Verwalten und Betrieb von Datenbanken verwendet wird. 2.MYSQL unterstützt mehrere Speichermotoren durch effiziente Datenspeicher- und Abruffunktionen, und SQL vervollständigt komplexe Datenoperationen durch einfache Aussagen. 3. Beispiele für die Nutzung sind grundlegende Abfragen und fortgeschrittene Abfragen wie Filterung und Sortierung nach Zustand. 4. Häufige Fehler umfassen Syntaxfehler und Leistungsprobleme, die durch Überprüfung von SQL -Anweisungen und Verwendung von Erklärungsbefehlen optimiert werden können. 5. Leistungsoptimierungstechniken umfassen die Verwendung von Indizes, die Vermeidung vollständiger Tabellenscanning, Optimierung von Join -Operationen und Verbesserung der Code -Lesbarkeit.

Mysqls Platz: Datenbanken und Programmierung Mysqls Platz: Datenbanken und Programmierung Apr 13, 2025 am 12:18 AM

Die Position von MySQL in Datenbanken und Programmierung ist sehr wichtig. Es handelt sich um ein Open -Source -Verwaltungssystem für relationale Datenbankverwaltung, das in verschiedenen Anwendungsszenarien häufig verwendet wird. 1) MySQL bietet effiziente Datenspeicher-, Organisations- und Abruffunktionen und unterstützt Systeme für Web-, Mobil- und Unternehmensebene. 2) Es verwendet eine Client-Server-Architektur, unterstützt mehrere Speichermotoren und Indexoptimierung. 3) Zu den grundlegenden Verwendungen gehören das Erstellen von Tabellen und das Einfügen von Daten, und erweiterte Verwendungen beinhalten Multi-Table-Verknüpfungen und komplexe Abfragen. 4) Häufig gestellte Fragen wie SQL -Syntaxfehler und Leistungsprobleme können durch den Befehl erklären und langsam abfragen. 5) Die Leistungsoptimierungsmethoden umfassen die rationale Verwendung von Indizes, eine optimierte Abfrage und die Verwendung von Caches. Zu den Best Practices gehört die Verwendung von Transaktionen und vorbereiteten Staten

So erstellen Sie eine SQL -Datenbank So erstellen Sie eine SQL -Datenbank Apr 09, 2025 pm 04:24 PM

Das Erstellen einer SQL -Datenbank umfasst 10 Schritte: Auswählen von DBMs; Installation von DBMs; Erstellen einer Datenbank; Erstellen einer Tabelle; Daten einfügen; Daten abrufen; Daten aktualisieren; Daten löschen; Benutzer verwalten; Sichern der Datenbank.

See all articles