Inhaltsverzeichnis
Ein einfacher Vergleichstest
Das Konzept des MySQL-Index
Typen von MySQL-Indizes
Heim Datenbank MySQL-Tutorial Zusammenfassung der MySQL-Indizes – detaillierte Einführung in die MySQL-Indextypen und deren Erstellung

Zusammenfassung der MySQL-Indizes – detaillierte Einführung in die MySQL-Indextypen und deren Erstellung

Mar 04, 2017 pm 03:04 PM

Was die Vorteile von MySQL-Indizes betrifft: Wenn MySQL, das ordnungsgemäß entwickelt wurde und Indizes verwendet, ein Lamborghini ist, dann ist MySQL, das nicht entwickelt wurde und Indizes verwendet, ein menschliches Dreirad. Bei Tabellen ohne Indizes kann eine einzelne Tabellenabfrage Hunderttausende Daten umfassen, was den Engpass darstellt. Normalerweise können große Websites Hunderttausende oder sogar Millionen Daten an einem einzigen Tag generieren, und Abfragen ohne Indizes werden sehr langsam. Am Beispiel von WordPress fügen seine mehreren Datentabellen Indizes zu häufig abgefragten Feldern hinzu. Beispielsweise verfügt die Tabelle wp_comments über einen BTREE-Index, der für 5 Felder ausgelegt ist.

Ein einfacher Vergleichstest

Nehmen Sie die Daten, die ich letztes Jahr getestet habe, als einfaches Beispiel. Mehr als 20 Datenquellen haben zufällig 2 Millionen Daten generiert. Im Durchschnitt hat jede Datenquelle etwa 100.000 Zweitens ist die Tabellenstruktur relativ einfach und enthält nur eine automatisch inkrementierende ID, einen char-Typ, einen text-Typ und einen int-Typ. Die einzelne Tabelle ist 2G groß und verwendet die MyIASM-Engine. Starten des Tests ohne Hinzufügen von Indizes.

Führen Sie die folgende SQL-Anweisung aus:

mysql> SELECT id,FROM_UNIXTIME(time) FROM article WHERE a.title='测试标题'
Nach dem Login kopieren

Die für die Abfrage erforderliche Zeit ist sehr beängstigend. Wenn Sie gemeinsame Abfragen und andere Einschränkungen hinzufügen, geht die Datenbank verloren Verrückt. Verbraucht Speicher und beeinträchtigt die Ausführung von Front-End-Programmen. Fügen Sie zu diesem Zeitpunkt einen BTREE-Index zum Titelfeld hinzu:

mysql> ALTER TABLE article ADD INDEX index_article_title ON title(200);
Nach dem Login kopieren

Führen Sie die obige Abfrageanweisung erneut aus, und der Kontrast ist sehr offensichtlich:

Das Konzept des MySQL-Index

Indizes sind spezielle Dateien (die Indizes der InnoDB-Datentabelle sind Bestandteil des Tabellenbereichs). Sie enthalten Referenzzeiger auf alle Datensätze in der Datentabelle. Allgemeiner ausgedrückt ist ein Datenbankindex wie das Inhaltsverzeichnis am Anfang eines Buches, das Datenbankabfragen beschleunigen kann. Wenn in der obigen SQL-Anweisung kein Index vorhanden ist, durchläuft die Datenbank alle 200 Daten und wählt diejenigen aus, die die Bedingungen erfüllen. Mit dem entsprechenden Index sucht die Datenbank direkt nach den Optionen, die die Bedingungen im Index erfüllen . Wenn wir die SQL-Anweisung in „SELECT * FROM Article WHERE id=2000000“ ändern, möchten Sie, dass die Datenbank Ihnen die Ergebnisse nach dem Lesen von 2 Millionen Datenzeilen nacheinander liefert oder sie direkt im Index lokalisiert? Der klare Zeitvergleich zwischen den beiden Bildern oben gibt bereits die Antwort (Hinweis: Im Allgemeinen generieren Datenbanken standardmäßig Indizes für den Primärschlüssel).

Indizes werden in Clustered-Indizes und Nicht-Cluster-Indizes unterteilt. Cluster-Indizes werden nach dem physischen Speicherort der Daten geordnet. Nicht-Cluster-Indizes können jedoch die Geschwindigkeit des Zeilenabrufs verbessern. während der nicht gruppierte Index beim Abrufen einzelner Zeilen schnell ist.

Typen von MySQL-Indizes

Dies ist der einfachste Index. Der für das Titelfeld oben erstellte Index unterliegt keinen Einschränkungen Ein gewöhnlicher Index, der Standardindex vom Typ BTREE in MyIASM, ist auch der Index, den wir in den meisten Fällen verwenden.

2. Eindeutiger Index
01    –直接创建索引    
02    CREATE INDEX index_name ON table(column(length))    
03    –修改表结构的方式添加索引    
04    ALTER TABLE table_name ADD INDEX index_name ON (column(length))    
05    –创建表的时候同时创建索引    
06    CREATE TABLE `table` (    
07    `id` int(11) NOT NULL AUTO_INCREMENT ,    
08    `title` char(255) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL ,    
09    `content` text CHARACTER SET utf8 COLLATE utf8_general_ci NULL ,    
10    `time` int(10) NULL DEFAULT NULL ,    
11    PRIMARY KEY (`id`),    
12    INDEX index_name (title(length))    
13    )    
14    –删除索引    
15    DROP INDEX index_name ON table
Nach dem Login kopieren


ähnelt einem normalen Index, außer dass der Wert der Indexspalte eindeutig sein muss, aber Nullwerte ​​sind zulässig (Beachten Sie, dass es sich vom Primärschlüssel unterscheidet). Wenn es sich um einen kombinierten Index handelt, muss die Kombination der Spaltenwerte eindeutig sein und die Erstellungsmethode ähnelt der eines normalen Index.

01    –创建唯一索引    
02    CREATE UNIQUE INDEX indexName ON table(column(length))    
03    –修改表结构    
04    ALTER TABLE table_name ADD UNIQUE indexName ON (column(length))    
05    –创建表的时候直接指定    
06    CREATE TABLE `table` (    
07    `id` int(11) NOT NULL AUTO_INCREMENT ,    
08    `title` char(255) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL ,    
09    `content` text CHARACTER SET utf8 COLLATE utf8_general_ci NULL ,    
10    `time` int(10) NULL DEFAULT NULL ,    
11    PRIMARY KEY (`id`),    
12    UNIQUE indexName (title(length))    
13    );
Nach dem Login kopieren
3. Volltextindex (FULLTEXT)



MySQL unterstützt Volltextindex und Volltextsuche ab Version 3.23 .23, FULLTEXT-Index Nur für MyISAM-Tabellen verfügbar; sie können aus CHAR-, VARCHAR- oder TEXT-Spalten als Teil einer CREATE TABLE-Anweisung erstellt oder später mit ALTER TABLE oder CREATE INDEX hinzugefügt werden. ////Bei größeren Datensätzen ist die Eingabe Ihrer Daten in eine Tabelle ohne FULLTEXT-Index und die anschließende Erstellung des Index schneller als die Eingabe der Daten in einen vorhandenen FULLTEXT-Index. Bedenken Sie jedoch, dass die Erstellung von Volltextindizes bei Datentabellen mit großer Kapazität ein sehr zeitaufwändiger und speicherplatzintensiver Prozess ist.

01    –创建表的适合添加全文索引    
02    CREATE TABLE `table` (    
03    `id` int(11) NOT NULL AUTO_INCREMENT ,    
04    `title` char(255) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL ,    
05    `content` text CHARACTER SET utf8 COLLATE utf8_general_ci NULL ,    
06    `time` int(10) NULL DEFAULT NULL ,    
07    PRIMARY KEY (`id`),    
08    FULLTEXT (content)    
09    );    
10    –修改表结构添加全文索引    
11    ALTER TABLE article ADD FULLTEXT index_content(content)    
12    –直接创建索引    
13    CREATE FULLTEXT INDEX index_content ON article(content)
Nach dem Login kopieren
4. Einspaltiger Index, mehrspaltiger Index



Der Abfrageeffekt mehrerer einspaltiger Indizes unterscheidet sich von das eines einzelnen mehrspaltigen Indexes, da MySQL beim Ausführen einer Abfrage nur einen Index verwenden kann und aus mehreren Indizes den restriktivsten Index auswählt.

5. Zusammengesetzter Index (Präfix ganz links)

Üblicherweise verwendete SQL-Abfrageanweisungen unterliegen im Allgemeinen mehr Einschränkungen. Um die Effizienz von MySQL weiter zu steigern, ist es notwendig, die Einrichtung eines zusammengesetzten Indexes in Betracht zu ziehen . In der obigen Tabelle wird beispielsweise ein kombinierter Index für Titel und Zeit erstellt: ALTER TABLE Article ADD INDEX index_titme_time (title(50), time(10)). Das Erstellen eines solchen kombinierten Index entspricht tatsächlich dem Erstellen der folgenden zwei Sätze kombinierter Indizes:

–Titel, Zeit

–Titel

Warum gibt es keinen kombinierten Index wie Zeit? ? Wolltuch? 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 beiden Spalten enthalten, verwenden den kombinierten Index, wie in den folgenden SQLs gezeigt:

Das Obige ist eine Zusammenfassung der MySQL-Indizes – eine detaillierte Einführung in die MySQL-Indextypen und die Erstellung von Inhalten, z Weitere verwandte Inhalte finden Sie auf der chinesischen PHP-Website (www.php.cn)!
1    –使用到上面的索引    
2    SELECT * FROM article WHREE title='测试' AND time=1234567890;    
3    SELECT * FROM article WHREE utitle='测试';    
4    –不使用上面的索引    
5    SELECT * FROM article WHREE time=1234567890;
Nach dem Login kopieren


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

Video Face Swap

Video Face Swap

Tauschen Sie Gesichter in jedem Video mühelos mit unserem völlig kostenlosen KI-Gesichtstausch-Tool aus!

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)

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.

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.

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

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 stellen Sie eine Verbindung zur Datenbank von Apache her So stellen Sie eine Verbindung zur Datenbank von Apache her Apr 13, 2025 pm 01:03 PM

Apache verbindet eine Verbindung zu einer Datenbank erfordert die folgenden Schritte: Installieren Sie den Datenbanktreiber. Konfigurieren Sie die Datei web.xml, um einen Verbindungspool zu erstellen. Erstellen Sie eine JDBC -Datenquelle und geben Sie die Verbindungseinstellungen an. Verwenden Sie die JDBC -API, um über den Java -Code auf die Datenbank zuzugreifen, einschließlich Verbindungen, Erstellen von Anweisungen, Bindungsparametern, Ausführung von Abfragen oder Aktualisierungen und Verarbeitungsergebnissen.

So starten Sie MySQL von Docker So starten Sie MySQL von Docker Apr 15, 2025 pm 12:09 PM

Der Prozess des Startens von MySQL in Docker besteht aus den folgenden Schritten: Ziehen Sie das MySQL -Image zum Erstellen und Starten des Containers an, setzen

CentOS installieren MySQL CentOS installieren MySQL Apr 14, 2025 pm 08:09 PM

Die Installation von MySQL auf CentOS umfasst die folgenden Schritte: Hinzufügen der entsprechenden MySQL Yum -Quelle. Führen Sie den Befehl mySQL-server aus, um den MySQL-Server zu installieren. Verwenden Sie den Befehl mySQL_SECURE_INSTALLATION, um Sicherheitseinstellungen vorzunehmen, z. B. das Festlegen des Stammbenutzerkennworts. Passen Sie die MySQL -Konfigurationsdatei nach Bedarf an. Tune MySQL -Parameter und optimieren Sie Datenbanken für die Leistung.

See all articles