Heim  >  Artikel  >  Datenbank  >  Einfaches Tutorial zum MySQL Advanced (2) Index

Einfaches Tutorial zum MySQL Advanced (2) Index

黄舟
黄舟Original
2017-02-09 15:11:15956Durchsuche

Mysql Index Simple Tutorial

Grundkonzepte

Indizierung bezieht sich auf das Speichern des Inhalts von Feld A, das Sie als Index in einem unabhängigen Intervall S festgelegt haben, das nur den Inhalt dieses Felds enthält . Bei der Suche nach dem Inhalt dieses Felds A wird direkt in diesem unabhängigen Intervall gesucht, anstatt in der Datentabelle zu suchen. Nachdem Sie diese qualifizierten Felder gefunden haben, lesen Sie die physische Adresse des realen Datensatzes, auf den Feld A zeigt, und geben Sie dann den entsprechenden Dateninhalt aus. Wenn Sie nach einem Feld suchen, das nicht indiziert ist, wird es in der Datentabelle durchsucht. Da die Datentabelle viele irrelevante Felder enthält, werden diese vom Datenbankprogramm nicht weggelassen oder durchsucht. Es erfordert eine gewisse Menge an Ressourcen, diese irrelevanten Felder zu ermitteln und mehrmals in den Datensatz zu springen. Je mehr Indizes Sie festlegen, desto besser. Da die Indizes in diesem unabhängigen Intervall S platziert sind, sind die Suchressourcen umso größer, je größer das unabhängige Intervall S ist. Wenn Sie nur ein Feld indiziert haben, ist die Suche in diesem Feld sehr schnell.

Der Zweck der Erstellung eines Index besteht darin, die Suche oder Sortierung von Datensätzen in der Tabelle zu beschleunigen. Das Setzen eines Index für eine Tabelle hat seinen Preis: Erstens erhöht es den Speicherplatz der Datenbank und zweitens dauert das Einfügen und Ändern von Daten länger (da sich auch der Index entsprechend ändert).

Der Vorteil des Index besteht darin, dass er die angegebenen Spalten sortieren und die Abrufgeschwindigkeit verbessern kann.

Ein einfaches Beispiel:

Die Daten in einer bestimmten Spalte sind

ID-Name

12 Xiao Li

10 Xiaolong

5 Xiaoqing

99 Xiaohong

Nachdem die ID-Spalte indiziert wurde, wird eine Indextabelle generiert

ID-Index

5 3

10 2

12 1

99 4

Bei der Abfrage mit ID = 10 wird die Indextabelle verwendet. Denn unter 10 ist 5. Daher wird der Tabellenscanvorgang nicht mehr ausgeführt. Gibt das zweite Datenelement zurück, das der zweiten Zeile der Haupttabelle entspricht. Dies verbessert die Abfragegeschwindigkeit. Wenn kein Index hinzugefügt wird, wird die gesamte Haupttabelle gescannt.

Für die Art des Index, welche Spalten indiziert werden müssen und andere verwandte Informationen müssen Sie auf Baidu suchen. Ich erzähle Ihnen hier einige grundlegende Konzepte.

Die Rolle, Vor- und Nachteile von Datenbankindizes

Warum einen Index erstellen? Dies liegt daran, dass die Erstellung von Indizes die Systemleistung erheblich verbessern kann.

Erstens kann durch die Erstellung eines eindeutigen Index die Eindeutigkeit jeder Datenzeile in der Datenbanktabelle garantiert werden.

Zweitens kann es den Datenabruf erheblich beschleunigen, was auch der Hauptgrund für die Erstellung eines Index ist.

Drittens kann es die Verbindung zwischen Tabellen beschleunigen, was besonders wichtig ist, um die referenzielle Integrität von Daten zu erreichen.

Viertens kann durch die Verwendung von Gruppierungs- und Sortierklauseln für den Datenabruf auch die Zeit zum Gruppieren und Sortieren in Abfragen erheblich verkürzt werden.

Fünftens können Sie durch die Verwendung von Indizes Optimierungs-Hider während des Abfrageprozesses verwenden, um die Systemleistung zu verbessern.

Manche Leute fragen sich vielleicht: Das Hinzufügen eines Indexes hat so viele Vorteile, warum nicht für jede Spalte in der Tabelle einen Index erstellen? Obwohl diese Idee vernünftig ist, ist sie auch einseitig. Obwohl Indizes viele Vorteile haben, ist es sehr unklug, jeder Spalte in der Tabelle einen Index hinzuzufügen. Dies liegt daran, dass das Hinzufügen eines Index viele Nachteile mit sich bringt.

Erstens nimmt die Erstellung und Pflege von Indizes Zeit in Anspruch, und diese Zeit nimmt mit zunehmender Datenmenge zu.

Zweitens muss der Index zusätzlich zum von der Datentabelle belegten Datenspeicherplatz auch einen bestimmten physischen Speicherplatz belegen benötigt wird größer sein.

Drittens muss beim Hinzufügen, Löschen und Ändern von Daten in der Tabelle der Index dynamisch verwaltet werden, was die Datenpflegegeschwindigkeit verringert.

Indizes werden auf bestimmten Spalten in der Datenbanktabelle erstellt. Daher sollten Sie beim Erstellen eines Index sorgfältig überlegen, welche Spalten indiziert werden können und welche nicht. Im Allgemeinen sollten Indizes für diese Spalten erstellt werden, zum Beispiel:

für häufig durchsuchte Spalten kann die Suche beschleunigen

für Spalten, die als Primärschlüssel dienen, und die Eindeutigkeit der Spalte erzwingen und Anordnungsstruktur der Daten in der Organisationstabelle; Bei diesen Spalten handelt es sich hauptsächlich um Fremdschlüssel, die die Verbindung beschleunigen können Erstellen Sie in der Verbindung einen Index für die Spalte, die anhand des Bereichs durchsucht werden muss, da der Index sortiert wurde und der angegebene Bereich kontinuierlich ist

Erstellen Sie Indizes für Spalten, die häufig sortiert werden müssen, da der Index sortiert wurde, sodass Abfragen die Sortierung des Index nutzen können, um die Sortierabfragezeit zu verkürzen.

Erstellen Sie Indizes für Spalten, die sortiert werden müssen Wird häufig in WHERE-Klauseln verwendet und beschleunigt die Beurteilung von Bedingungen.

Außerdem gibt es einige Spalten, die nicht indiziert werden sollten. Im Allgemeinen weisen diese Spalten, die nicht indiziert werden sollten, die folgenden Merkmale auf:

Erstens sollten keine Indizes für Spalten erstellt werden, die in Abfragen selten verwendet oder referenziert werden. Dies liegt daran, dass diese Spalten nur selten verwendet werden und eine Indizierung oder Nicht-Indizierung die Abfragegeschwindigkeit nicht verbessert. Im Gegenteil: Durch das Hinzufügen von Indizes wird die Wartungsgeschwindigkeit des Systems verringert und der Platzbedarf erhöht.

Zweitens sollten Indizes nicht zu Spalten mit wenigen Datenwerten hinzugefügt werden. Dies liegt daran, dass die Datenzeilen im Ergebnissatz einen großen Teil der Datenzeilen in der Tabelle ausmachen, da diese Spalten in den Abfrageergebnissen nur sehr wenige Werte enthalten, z. B. die Geschlechtsspalte der Personaltabelle. Die Daten, die in der Tabelle durchsucht werden müssen. Der Anteil der Zeilen ist riesig. Durch Erhöhen des Index wird der Abruf nicht wesentlich beschleunigt.

Drittens sollten keine Indizes zu Spalten hinzugefügt werden, die als Text-, Bild- und Bit-Datentypen definiert sind. Dies liegt daran, dass das Datenvolumen dieser Spalten entweder recht groß ist oder nur sehr wenige Werte aufweist.

Viertens sollte der Index nicht erstellt werden, wenn die Änderungsleistung weitaus größer ist als die Abrufleistung. Dies liegt daran, dass die Änderungsleistung und die Abrufleistung im Widerspruch zueinander stehen. Beim Hinzufügen von Indizes wird die Abrufleistung verbessert, die Änderungsleistung wird jedoch verringert. Beim Reduzieren von Indizes erhöht sich die Änderungsleistung und die Abrufleistung verringert sich. Daher sollten keine Indizes erstellt werden, wenn die Änderungsleistung viel höher ist als die Abrufleistung.

Methoden zum Erstellen von Indizes und Eigenschaften von Indizes

Methoden zum Erstellen von Indizes

Es gibt viele Möglichkeiten zum Erstellen von Indizes. Zu diesen Methoden gehören Methoden zur direkten Indexerstellung und indirekte Methoden zur Indexerstellung Verfahren. Indizes werden direkt erstellt, beispielsweise mit der CREATE INDEX-Anweisung oder mit dem Indexerstellungsassistenten, und Indizes werden indirekt erstellt, beispielsweise beim Definieren von Primärschlüsseleinschränkungen oder Eindeutigkeitsschlüsseleinschränkungen in der Tabelle. Der Index wird ebenfalls erstellt.

Obwohl beide Methoden Indizes erstellen können, sind die spezifischen Inhalte der Indexerstellung unterschiedlich.

Verwenden Sie die CREATE INDEX-Anweisung oder den Create Index Wizard, um einen Index zu erstellen. Dies ist die einfachste Art, einen Index zu erstellen, und diese Methode ist die flexibelste. Sie können den Index an Ihre Bedürfnisse anpassen .

Wenn Sie auf diese Weise einen Index erstellen, können Sie viele Optionen nutzen, wie z. B. die Angabe der Vollständigkeit der Datenseite, Sortierung, Sortierstatistiken usw., um den Index zu optimieren. Mit dieser Methode können Sie den Typ, die Eindeutigkeit und die Zusammensetzung des Index angeben, d. h. Sie können entweder einen Clustered-Index oder einen Nicht-Clustered-Index erstellen und einen Index für eine oder zwei Spalten erstellen Index für mehr als zwei Spalten.

Indizes können auch indirekt durch die Definition von Primärschlüsseleinschränkungen oder Eindeutigkeitsschlüsseleinschränkungen erstellt werden. Eine Primärschlüsseleinschränkung ist eine Logik, die die Datenintegrität aufrechterhält, indem sie Datensätze in einer Tabelle auf denselben Primärschlüsseldatensatz beschränkt. Beim Erstellen einer Primärschlüsseleinschränkung erstellt das System automatisch einen eindeutigen Clustered-Index.

Obwohl die Primärschlüsseleinschränkung logischerweise eine wichtige Struktur ist, ist die Struktur, die der Primärschlüsseleinschränkung entspricht, in Bezug auf die physische Struktur ein eindeutiger Clustered-Index. Mit anderen Worten: Bei der physischen Implementierung gibt es keine Primärschlüsselbeschränkung, sondern nur einen eindeutigen Clustered-Index.

In ähnlicher Weise wird beim Erstellen einer eindeutigen Schlüsseleinschränkung auch ein Index erstellt, bei dem es sich um einen eindeutigen, nicht gruppierten Index handelt. Daher sind bei der Verwendung von Einschränkungen zum Erstellen eines Index grundsätzlich der Typ und die Eigenschaften des Index festgelegt, und es gibt weniger Raum für Benutzeranpassungen.

Wenn Sie beim Definieren eines Primärschlüssels oder einer Eindeutigkeitsschlüsseleinschränkung für eine Tabelle bereits einen Standardindex haben, der mit der CREATE INDEX-Anweisung erstellt wurde, überschreibt der durch die Primärschlüsseleinschränkung oder Eindeutigkeitsschlüsseleinschränkung erstellte Index den zuvor erstellter Standardindex. Mit anderen Worten: Indizes, die durch Primärschlüsseleinschränkungen oder Eindeutigkeitsschlüsseleinschränkungen erstellt wurden, haben eine höhere Priorität als Indizes, die mit der CREATE INDEX-Anweisung erstellt wurden.

Eigenschaften des Index

Der Index weist zwei Eigenschaften auf, nämlich den eindeutigen Index und den zusammengesetzten Index.

Eindeutiger Index stellt sicher, dass alle Daten in der Indexspalte eindeutig sind und keine redundanten Daten enthalten. Wenn die Tabelle bereits über eine Primärschlüsseleinschränkung oder eine Eindeutigkeitsschlüsseleinschränkung verfügt, erstellt SQL Server automatisch einen eindeutigen Index, wenn die Tabelle erstellt oder geändert wird.

Wenn jedoch die Eindeutigkeit gewährleistet sein muss, sollte anstelle eines eindeutigen Index eine Primärschlüsseleinschränkung oder eine Eindeutigkeitsschlüsseleinschränkung erstellt werden. Wenn Sie einen eindeutigen Index erstellen, sollten Sie diese Regeln sorgfältig berücksichtigen: Wenn Sie eine Primärschlüsseleinschränkung oder eine eindeutige Schlüsseleinschränkung in einer Tabelle erstellen, erstellt SQL Server automatisch einen eindeutigen Index.

Wenn die Tabelle bereits Daten enthält, dann Beim Erstellen eines Index prüft SQL Server die Redundanz der bereits in der Tabelle enthaltenen Daten. Immer wenn eine Einfügeanweisung zum Einfügen von Daten oder eine Änderungsanweisung zum Ändern von Daten verwendet wird, prüft SQL Server die Daten auf Redundanz: Wenn redundante Werte vorhanden sind , dann bricht SQL Server die Ausführung der Anweisung ab und gibt eine Fehlermeldung zurück;

stellt sicher, dass jede Datenzeile in der Tabelle einen eindeutigen Wert hat, wodurch sichergestellt wird, dass jede Entität nur dann eindeutig bestätigt werden kann; kann garantiert werden. Erstellen Sie einen eindeutigen Index für die vollständige Spalte. Sie können beispielsweise keinen eindeutigen Index für die Namensspalte in der Personaltabelle erstellen, da Personen denselben Namen haben können.

Ein zusammengesetzter Index ist ein Index, der für zwei oder mehr Spalten erstellt wird. Wenn bei der Suche zwei oder mehr Spalten als Schlüsselwert dienen, ist es am besten, einen zusammengesetzten Index für diese Spalten zu erstellen. Beim Erstellen eines zusammengesetzten Index sollten Sie die folgenden Regeln berücksichtigen: Bis zu 16 Spalten können in einem einzigen zusammengesetzten Index kombiniert werden, und die Gesamtlänge der Spalten, aus denen der zusammengesetzte Index besteht, darf 900 Byte nicht überschreiten, was bedeutet, dass die Länge des Die zusammengesetzte Spalte darf nicht zu lang sein.

In einem zusammengesetzten Index müssen alle Spalten aus derselben Tabelle stammen und in einem zusammengesetzten Index können keine zusammengesetzten Spalten erstellt werden. Die Reihenfolge der Spalten ist sehr wichtig. Daher muss die Reihenfolge der Spalten sorgfältig festgelegt werden. Beispielsweise ist der Index für (COL1, COL2) aufgrund der Reihenfolge nicht mit dem Index für (COL2, COL1) identisch Die Anzahl der Spalten der beiden Indizes ist unterschiedlich.

Damit der Abfrageoptimierer einen zusammengesetzten Index verwenden kann, muss sich die WHERE-Klausel in der Abfrageanweisung auf die erste Spalte im zusammengesetzten Index beziehen nützlich, wenn die Tabelle mehrere Schlüsselspalten enthält; die Verwendung zusammengesetzter Indizes kann die Abfrageleistung verbessern und die Anzahl der für eine Tabelle erstellten Indizes reduzieren.

Indextyp

Nicht eindeutiger Index bedeutet, dass die Werte in diesem Index wiederholt werden dürfen. Bezogen auf den eindeutigen Index dürfen die Werte in diesem Index nicht wiederholt werden.

Ein einfaches Beispiel ist wie unser Personalausweis. Sofern in der Datenbank gespeichert. Wenn Sie einen Index für den Namen erstellen, handelt es sich um einen nicht eindeutigen Index, da eine Person mit demselben Namen existiert. Wenn Sie einen Index für die ID-Kartennummer erstellen, handelt es sich um einen eindeutigen Index. Da sich die Nummern wiederholen, ist dies problematisch.

Das Obige ist der Inhalt des einfachen Tutorials zum erweiterten MySQL-Index (2). Weitere verwandte Inhalte finden Sie auf der chinesischen PHP-Website (www.php.cn).


Stellungnahme:
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