Heim Datenbank MySQL-Tutorial Design und Verwendung des MySQL-Index

Design und Verwendung des MySQL-Index

Dec 14, 2016 pm 01:54 PM

Indexdesign und -verwendung
5.1 MySQL-Indexübersicht
Alle MySQL-Spaltentypen können indiziert werden. Die Verwendung von Indizes für verwandte Spalten ist die beste Möglichkeit, die Leistung von SELECT-Vorgängen zu verbessern. Definieren Sie die maximale Anzahl von Indizes und die maximale Indexlänge für jede Tabelle entsprechend der Speicher-Engine. Alle Speicher-Engines unterstützen mindestens 16 Indizes pro Tabelle mit einer Gesamtindexlänge von mindestens 256 Byte. Die meisten Speicher-Engines haben höhere Grenzwerte.
In MySQL 5.1 können Präfixe für MyISAM- und InnoDB-Tabellen bis zu 1000 Byte lang sein. Beachten Sie, dass die Grenze eines Präfixes in Bytes gemessen werden sollte, wohingegen die Präfixlänge in der CREATE TABLE-Anweisung als Anzahl von Zeichen interpretiert wird. Berücksichtigen Sie dies unbedingt, wenn Sie eine Präfixlänge für Spalten angeben, die Multibyte-Zeichensätze verwenden.
Es können auch VOLLTEXT-Indizes erstellt werden. Der Index kann für die Volltextsuche verwendet werden. Nur die MyISAM-Speicher-Engine unterstützt FULLTEXT-Indizes und nur für CHAR-, VARCHAR- und TEXT-Spalten. Indizes werden immer für die gesamte Spalte durchgeführt. Teilindizes (Präfixe) werden nicht unterstützt. Für räumliche Spaltentypen können auch Indizes erstellt werden. Nur die MyISAM-Speicher-Engine unterstützt räumliche Typen. Räumliche Indizes verwenden R-Bäume. Standardmäßig verwendet die Speicher-Engine MEMORY (HEAP) Hash-Indizes, aber auch B-Tree-Indizes werden unterstützt.
5.2 Prinzipien des Indexdesigns
1. Die zu durchsuchende Indexspalte ist nicht unbedingt die auszuwählende Spalte. Mit anderen Worten: Die am besten geeigneten Spalten für die Indizierung sind die Spalten, die in der WHERE-Klausel oder die in der Join-Klausel angegebenen Spalten erscheinen, und nicht die Spalten, die in der Auswahlliste nach dem Schlüsselwort SELECT erscheinen.
2. Verwenden Sie einen eindeutigen Index. Betrachten Sie die Verteilung der Werte in einer Spalte. Indizes funktionieren am besten für Spalten mit eindeutigen Werten und am schlechtesten für Spalten mit mehreren doppelten Werten. Beispielsweise weist die Spalte, die das Alter enthält, unterschiedliche Werte auf, was die Unterscheidung zwischen Zeilen erleichtert.
Die zum Aufzeichnen des Geschlechts verwendete Spalte enthält nur „M“ und „F“, daher ist die Indizierung dieser Spalte von geringem Nutzen (unabhängig davon, welcher Wert gesucht wird, wird etwa die Hälfte der Zeilen erhalten)
3 Kurzer Index. Bei der Indizierung in eine Zeichenfolge sollten Sie nach Möglichkeit eine Präfixlänge angeben.
Wenn Sie beispielsweise eine CHAR(200)-Spalte haben, indizieren Sie nicht die gesamte Spalte, wenn die meisten Werte innerhalb der ersten 10 oder 20 Zeichen eindeutig sind. Die Indizierung der ersten 10 oder 20 Zeichen kann viel Indexplatz sparen und Abfragen möglicherweise beschleunigen. Kleinere Indizes erfordern weniger Festplatten-E/A und kürzere Werte sind im Vergleich schneller.
Noch wichtiger ist, dass bei kürzeren Schlüsselwerten die Blöcke im Index-Cache mehr Schlüsselwerte enthalten können, sodass MySQL auch mehr Werte im Speicher halten kann. Dies erhöht die Wahrscheinlichkeit, die Zeile zu finden, ohne größere Blöcke im Index zu lesen.
(Natürlich sollte etwas gesunder Menschenverstand verwendet werden. Die Indizierung nur nach dem ersten Zeichen eines Spaltenwerts wird wahrscheinlich keinen großen Nutzen bringen, da dieser Index nicht viele verschiedene Werte enthält.)
4. Präfix ganz links ausnutzen. Wenn Sie einen Index für n Spalten erstellen, erstellen Sie tatsächlich n Indizes, die MySQL verwenden kann.
Ein mehrspaltiger Index kann als mehrere Indizes funktionieren, da der Spaltensatz ganz links im Index zum Abgleichen von Zeilen verwendet werden kann. Ein solcher Satz von Spalten wird als Präfix ganz links bezeichnet. (Dies unterscheidet sich von der Indizierung des Präfixes einer Spalte, bei der die ersten n Zeichen der Spalte als Indexwert verwendet werden.)
5. Denken Sie nicht, dass es falsch ist, für alles Indizes zu verwenden. Jeder zusätzliche Index beansprucht zusätzlichen Speicherplatz und verringert die Leistung von Schreibvorgängen, die wir bereits eingeführt haben. Wenn der Inhalt der Tabelle geändert wird, muss der Index aktualisiert und manchmal neu erstellt werden. Daher gilt: Je mehr Indizes, desto länger dauert es
. Wenn Sie einen Index haben, der selten oder nie verwendet wird, werden Änderungen an der Tabelle unnötig verlangsamt.
Außerdem muss MySQL bei der Erstellung eines Ausführungsplans jeden Index berücksichtigen, was ebenfalls Zeit kostet. Durch die Erstellung redundanter Indizes entsteht mehr Aufwand für die Abfrageoptimierung. Zu viele Indizes können MySQL auch daran hindern, den besten zu verwendenden Index auszuwählen. Das Beibehalten nur der erforderlichen Indizes erleichtert die Abfrageoptimierung. Wenn Sie einen Index zu einer bereits indizierten Tabelle hinzufügen möchten, sollten Sie überlegen, ob der hinzuzufügende Index der Index ganz links eines vorhandenen mehrspaltigen Index ist. Wenn ja, machen Sie sich nicht die Mühe, diesen Index hinzuzufügen, da er bereits vorhanden ist.
6. Berücksichtigen Sie die Arten von Vergleichen, die auf Spalten durchgeführt werden. Indizes können mit den Operationen „ <“, „ < =“, „ > =“, „ >“ verwendet werden. Indizes werden auch in LIKE-Operationen verwendet, wenn das Muster ein Literalpräfix hat. Wenn eine Spalte nur für andere Arten von Operationen verwendet wird (z. B. STRCMP()), hat die Indizierung keinen Wert.
5.3 Btree-Index und Hash-Index
Bei BTREE- und HASH-Indizes entspricht die Vergleichsbeziehung zwischen Schlüsselelementen und konstanten Werten bei Verwendung der Operatoren =, <=>, IN, IS NULL oder IS NOT NULL zu einem Geltungsbereichsbedingungen. Hash-Indizes haben einige zusätzliche Funktionen: Sie werden nur für Gleichheitsvergleiche mit den Operatoren = oder <=> verwendet (aber schnell). Der Optimierer kann keine Hash-Indizes verwenden, um ORDER BY-Vorgänge zu beschleunigen.
(Dieser Indextyp kann nicht für die Suche nach dem nächsten Eintrag in Folge verwendet werden.) MySQL kann nicht ungefähr bestimmen, wie viele Zeilen zwischen zwei Werten liegen (dies wird vom Bereichsoptimierer verwendet, um zu bestimmen, welcher Index verwendet werden soll). Wenn Sie eine MyISAM-Tabelle in eine Hash-indizierte MEMORY-Tabelle ändern, sind einige Abfragen betroffen. Zum Durchsuchen einer Zeile kann nur das gesamte Schlüsselwort verwendet werden. (Bei einem B-Tree-Index kann das Präfix ganz links eines beliebigen Schlüssels verwendet werden, um die Zeile zu finden.)
Für den BTREE-Index bei Verwendung von >, <, >=, <=, BETWEEN, != oder <> oder LIKE 'pattern' (wobei 'pattern' nicht mit einem Platzhalter beginnt) Operator Wenn die Vergleichsbeziehung zwischen Schlüsselelementen und konstanten Werten einer Bereichsbedingung entspricht.
„Konstanter Wert“ bezieht sich auf: eine Konstante in einer Abfragezeichenfolge, eine Konstante im selben Join oder eine Spalte in der Systemtabelle, das Ergebnis einer nicht korrelierten Unterabfrage, einen Ausdruck, der vollständig aus Unterausdrücken des vorherigen Typs besteht
Im Folgenden finden Sie einige Beispiele für Abfragen mit Bereichsbedingungen in der WHERE-Klausel:
Die folgenden Bereichsabfragen eignen sich für Btree-Indizes und Hash-Indizes
SELECT * FROM t1WHEREkey_col = 1ORkey_col IN (15,18,20);
Die folgende Bereichsabfrage gilt für den Btree-Index
SELECT * FROM t1WHERE key_col > 1AND key_col <
SELECT * FROM t1WHERE key_col LIKE 'ab%'OR key_col BETWEEN 'bar' AND
' foo';
5.4 Wie MySQL Indizes verwendet
Indizes werden verwendet, um schnell Zeilen mit einem bestimmten Wert in einer Spalte zu finden. Ohne die Verwendung eines Index muss MySQL bei Datensatz 1 beginnen und die gesamte Tabelle durchlesen, bis es die relevante Zeile findet. Je größer der Tisch, desto länger dauert es. Wenn die abgefragte Spalte in der Tabelle einen Index hat, kann MySQL schnell an einen Punkt gelangen, an dem es die Mitte der Datendatei durchsucht, ohne sich alle Daten ansehen zu müssen. Zum Beispiel
Wenn eine Tabelle 1000 Zeilen hat, ist dies mindestens 100-mal schneller als das sequentielle Lesen. Beachten Sie, dass das sequentielle Lesen viel schneller ist, wenn Sie auf einen großen Teil der Zeilen zugreifen müssen, da wir an diesem Punkt eine Festplattensuche vermeiden.
Die meisten MySQL-Indizes (PRIMARY KEY, UNIQUE, INDEX und FULLTEXT) werden in B-Bäumen gespeichert. Nur räumliche Spaltentypindizes verwenden R-Tree, und MEMORY-Tabellen unterstützen auch Hash-Indizes.
Eine detaillierte Erläuterung der Umstände, unter denen die Datenbank Indizes verwendet, und der Umstände, unter denen die Datenbank keine Indizes verwendet, finden Sie in den entsprechenden Kapiteln des Optimierungskapitels, die hier nicht wiederholt werden.

Weitere verwandte Artikel finden Sie auf der chinesischen PHP-Website (www.php.cn)!

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)
1 Monate vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Beste grafische Einstellungen
1 Monate vor By 尊渡假赌尊渡假赌尊渡假赌
Will R.E.P.O. Crossplay haben?
1 Monate 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)

Mar 18, 2024 pm 02:58 PM

CrystalDiskMark ist ein kleines HDD-Benchmark-Tool für Festplatten, das schnell sequentielle und zufällige Lese-/Schreibgeschwindigkeiten misst. Lassen Sie sich als Nächstes vom Redakteur CrystalDiskMark und die Verwendung von CrystalDiskMark vorstellen ). Zufällige I/O-Leistung. Es ist eine kostenlose Windows-Anwendung und bietet eine benutzerfreundliche Oberfläche und verschiedene Testmodi zur Bewertung verschiedener Aspekte der Festplattenleistung. Sie wird häufig in Hardware-Reviews verwendet

Mar 18, 2024 am 10:58 AM

foobar2000 ist eine Software, die Ihnen jederzeit Musik aller Art mit verlustfreier Klangqualität bietet Spielen Sie das erweiterte Audio auf dem Computer ab, um ein bequemeres und effizienteres Musikwiedergabeerlebnis zu ermöglichen. Das Interface-Design ist einfach, klar und benutzerfreundlich. Es nimmt einen minimalistischen Designstil an, ohne übermäßige Dekoration Es unterstützt außerdem eine Vielzahl von Skins und Themes, personalisiert Einstellungen nach Ihren eigenen Vorlieben und erstellt einen exklusiven Musikplayer, der die Wiedergabe mehrerer Audioformate unterstützt. Außerdem unterstützt es die Audio-Gain-Funktion zum Anpassen der Lautstärke Passen Sie die Lautstärke entsprechend Ihrem Hörzustand an, um Hörschäden durch zu hohe Lautstärke zu vermeiden. Als nächstes lass mich dir helfen

So verwenden Sie NetEase Mailbox Master So verwenden Sie NetEase Mailbox Master Mar 27, 2024 pm 05:32 PM

NetEase Mailbox ist eine von chinesischen Internetnutzern weit verbreitete E-Mail-Adresse und hat mit seinen stabilen und effizienten Diensten schon immer das Vertrauen der Benutzer gewonnen. NetEase Mailbox Master ist eine E-Mail-Software, die speziell für Mobiltelefonbenutzer entwickelt wurde. Sie vereinfacht das Senden und Empfangen von E-Mails erheblich und macht unsere E-Mail-Verarbeitung komfortabler. Wie Sie NetEase Mailbox Master verwenden und welche spezifischen Funktionen es bietet, wird Ihnen der Herausgeber dieser Website im Folgenden ausführlich vorstellen und hofft, Ihnen weiterzuhelfen! Zunächst können Sie die NetEase Mailbox Master-App im Mobile App Store suchen und herunterladen. Suchen Sie im App Store oder im Baidu Mobile Assistant nach „NetEase Mailbox Master“ und befolgen Sie dann die Anweisungen zur Installation. Nachdem der Download und die Installation abgeschlossen sind, öffnen wir das NetEase-E-Mail-Konto und melden uns an. Die Anmeldeschnittstelle ist wie unten dargestellt

So verwenden Sie die Baidu Netdisk-App So verwenden Sie die Baidu Netdisk-App Mar 27, 2024 pm 06:46 PM

Cloud-Speicher sind heutzutage aus unserem täglichen Leben und Arbeiten nicht mehr wegzudenken. Als einer der führenden Cloud-Speicherdienste in China hat Baidu Netdisk mit seinen leistungsstarken Speicherfunktionen, der effizienten Übertragungsgeschwindigkeit und dem komfortablen Bedienerlebnis die Gunst einer großen Anzahl von Benutzern gewonnen. Und egal, ob Sie wichtige Dateien sichern, Informationen teilen, Videos online ansehen oder Musik hören möchten, Baidu Cloud Disk kann Ihre Anforderungen erfüllen. Viele Benutzer verstehen jedoch möglicherweise nicht die spezifische Verwendung der Baidu Netdisk-App. Dieses Tutorial führt Sie daher im Detail in die Verwendung der Baidu Netdisk-App ein. Wenn Sie immer noch verwirrt sind, folgen Sie bitte diesem Artikel, um mehr im Detail zu erfahren. So verwenden Sie Baidu Cloud Network Disk: 1. Installation Wählen Sie beim Herunterladen und Installieren der Baidu Cloud-Software zunächst die benutzerdefinierte Installationsoption aus.

Das tragbare 5G-WLAN U50S von ZTE wird für 899 NT$ zum Einstiegspreis zum Verkauf angeboten: maximale Netzwerkgeschwindigkeit 500 Mbit/s Das tragbare 5G-WLAN U50S von ZTE wird für 899 NT$ zum Einstiegspreis zum Verkauf angeboten: maximale Netzwerkgeschwindigkeit 500 Mbit/s Apr 26, 2024 pm 03:46 PM

Laut Nachrichten vom 26. April ist das tragbare 5G-WLAN U50S von ZTE jetzt offiziell zum Preis ab 899 Yuan erhältlich. Was das Erscheinungsbild angeht, ist das ZTE U50S Portable Wi-Fi einfach und stilvoll, leicht zu halten und zu verpacken. Seine Größe beträgt 159/73/18 mm und ist leicht zu transportieren, sodass Sie jederzeit und überall das 5G-Hochgeschwindigkeitsnetzwerk nutzen und ein ungehindertes mobiles Büro- und Unterhaltungserlebnis erzielen können. Das tragbare Wi-Fi U50S von ZTE unterstützt das fortschrittliche Wi-Fi 6-Protokoll mit einer Spitzenrate von bis zu 1800 Mbit/s. Es basiert auf der leistungsstarken 5G-Plattform Snapdragon X55, um Benutzern ein extrem schnelles Netzwerkerlebnis zu bieten. Es unterstützt nicht nur die 5G-Dual-Mode-SA+NSA-Netzwerkumgebung und das Sub-6-GHz-Frequenzband, die gemessene Netzwerkgeschwindigkeit kann sogar erstaunliche 500 Mbit/s erreichen, was durchaus zufriedenstellend ist.

BTCC-Tutorial: Wie kann ich die MetaMask-Wallet an der BTCC-Börse binden und verwenden? BTCC-Tutorial: Wie kann ich die MetaMask-Wallet an der BTCC-Börse binden und verwenden? Apr 26, 2024 am 09:40 AM

MetaMask (auf Chinesisch auch Little Fox Wallet genannt) ist eine kostenlose und beliebte Verschlüsselungs-Wallet-Software. Derzeit unterstützt BTCC die Bindung an die MetaMask-Wallet. Nach der Bindung können Sie sich mit der MetaMask-Wallet schnell anmelden, Werte speichern, Münzen kaufen usw. und bei der erstmaligen Bindung einen Testbonus von 20 USDT erhalten. Im BTCCMetaMask-Wallet-Tutorial stellen wir detailliert vor, wie man MetaMask registriert und verwendet und wie man das Little Fox-Wallet in BTCC bindet und verwendet. Was ist die MetaMask-Wallet? Mit über 30 Millionen Nutzern ist MetaMask Little Fox Wallet heute eines der beliebtesten Kryptowährungs-Wallets. Die Nutzung ist kostenlos und kann als Erweiterung im Netzwerk installiert werden

Retro-Trend! HMD und Heineken bringen gemeinsam ein Klapptelefon auf den Markt: transparentes Gehäusedesign Retro-Trend! HMD und Heineken bringen gemeinsam ein Klapptelefon auf den Markt: transparentes Gehäusedesign Apr 17, 2024 pm 06:50 PM

Laut Nachrichten vom 17. April hat sich HMD mit der bekannten Biermarke Heineken und dem Kreativunternehmen Bodega zusammengetan, um ein einzigartiges Klapptelefon auf den Markt zu bringen – The Boring Phone. Dieses Telefon steckt nicht nur voller Innovationen im Design, sondern kehrt auch in puncto Funktionalität zur Natur zurück und zielt darauf ab, Menschen zu echten zwischenmenschlichen Interaktionen zurückzubringen und die reine Zeit des Trinkens mit Freunden zu genießen. Das langweilige Mobiltelefon verfügt über ein einzigartiges transparentes Flip-Design, das eine schlichte, aber elegante Ästhetik zeigt. Es ist innen mit einem 2,8-Zoll-QVGA-Display und außen mit einem 1,77-Zoll-Display ausgestattet und bietet Benutzern ein grundlegendes visuelles Interaktionserlebnis. Fotografisch ist es zwar nur mit einer 30-Megapixel-Kamera ausgestattet, reicht aber für einfache Alltagsaufgaben aus.

Honor Magic V3 stellt erstmals die KI-Defokussierungs-Augenschutztechnologie vor: Lindert effektiv die Entwicklung von Kurzsichtigkeit Honor Magic V3 stellt erstmals die KI-Defokussierungs-Augenschutztechnologie vor: Lindert effektiv die Entwicklung von Kurzsichtigkeit Jul 18, 2024 am 09:27 AM

Laut Nachrichten vom 12. Juli wurde die Honor Magic V3-Serie heute offiziell veröffentlicht und ist mit dem neuen Honor Vision Soothing Oasis-Augenschutzbildschirm ausgestattet. Der Bildschirm selbst verfügt zwar über hohe Spezifikationen und eine hohe Qualität, war aber auch Vorreiter bei der Einführung des aktiven KI-Augenschutzes Technologie. Es wird berichtet, dass die traditionelle Methode zur Linderung von Myopie „Myopie-Brillen“ ist. Die Stärke von Myopie-Brillen ist gleichmäßig verteilt, um sicherzustellen, dass der zentrale Sehbereich auf der Netzhaut abgebildet wird, der periphere Bereich jedoch dahinter Die Netzhaut erkennt, dass das Bild zurückliegt, wodurch die Richtung der Augenachse später wächst und sich dadurch vertieft. Eine der wichtigsten Möglichkeiten, die Entwicklung von Myopie zu lindern, ist derzeit die „Defokussierungslinse“. Der zentrale Bereich hat eine normale Stärke, und der periphere Bereich wird durch optische Designtrennwände so angepasst, dass das Bild im peripheren Bereich fällt vor der Netzhaut.

See all articles