Heim  >  Artikel  >  Datenbank  >  Werden MySQL-Indizes automatisch verwendet?

Werden MySQL-Indizes automatisch verwendet?

little bottle
little bottleOriginal
2019-05-10 16:44:333024Durchsuche

Der MySQL-Index kann automatisch verwendet werden, und Benutzer können seine Verwendung auch erzwingen. MYSQL verwendet den Index nach der Erstellung des Index auf zwei Arten: Zum einen bestimmt der Abfrageoptimierer der Datenbank automatisch, ob er verwendet werden soll, zum anderen kann der Benutzer die Verwendung des Index beim Schreiben von SQL-Anweisungen erzwingen.

Werden MySQL-Indizes automatisch verwendet?

Es gibt zwei Möglichkeiten, wie MYSQL den Index nach der Indexerstellung verwendet: Erstens bestimmt der Abfrageoptimierer der Datenbank automatisch, ob der Index verwendet werden soll Der Abfrageoptimierer der Datenbank bestimmt automatisch, ob der Index verwendet werden soll. Benutzer können die Verwendung von Indizes beim Schreiben von SQL-Anweisungen erzwingen.

(Empfohlenes Tutorial: MySQL-Video-Tutorial )

MYSQL verwendet den Index nach der Indexerstellung auf zwei Arten:

1. Der Abfrageoptimierer der Datenbank bestimmt automatisch, ob ein Index verwendet werden soll.

2. Benutzer können die Verwendung von Indizes beim Schreiben von SQL-Anweisungen erzwingen.

Die folgenden zwei Indizes werden verwendet Erklärungsmöglichkeiten

Die erste Möglichkeit besteht darin, den Index automatisch zu verwenden.

Nach Erhalt der Abfrageanweisung überprüft die Datenbank die Abfragebedingungen hinter der Where-Anweisung, prüft, welche Indizes in der Tabelle vorhanden sind, und gleicht sie dann basierend auf den Abfragebedingungen und Indizes ab.
Der Abgleich von Abfragebedingungen und Index umfasst den Abgleich von Abfragefeld und Indexfeld sowie den Abgleich von Abfragetyp und Indextyp. Ersteres ist leicht zu verstehen, das heißt, ein Index muss auf den Attributen der Abfragebedingungen erstellt werden, während letzteres bedeutet, dass die Abfragebedingungen in der Lage sein müssen, Indizes zu verwenden. Beispielsweise können Gleichheitsbeurteilungen und Bereichsabfragen den B+-Baum verwenden Index, während der Hash-Index nur auf gleiche Werte angewendet werden kann.

Nachdem ein Index gefunden wurde, der den Abfragebedingungen entspricht, wird eine Kostenschätzung erstellt, um zu entscheiden, ob der Index verwendet werden soll. Die Kostenschätzung basiert im Allgemeinen auf der Anzahl der Datensätze, auf die zugegriffen werden soll der Datensätze, auf die über den Index zugegriffen wird, machen die Gesamtzahl der Tabellendatensätze aus. Wenn die Anzahl mehr als 15 % beträgt, wird der Index nicht verwendet, sondern es wird ein vollständiger Tabellenscan verwendet, da die Kosten für die Verwendung des Index zu diesem Zeitpunkt höher sind. Die Verwendung von Indizes verbessert in den meisten Fällen die Effizienz.

Nach der Beurteilung des Optimierers wird dieser letztendlich entscheiden, ob der Index verwendet werden soll.

Die zweite Methode besteht darin, die Verwendung von Indizes zu erzwingen, hauptsächlich durch SQL-Anweisungen

select * from table force index(PRI) limit 2;(强制使用主键)
select * from table force index(ziduan1_index) limit 2;(强制使用索引"ziduan1_index")
select * from table force index(PRI,ziduan1_index) limit 2;(强制使用索引"PRI和ziduan1_index")

Sie können die Verwendung von Indizes auch verbieten

select * from table ignore index(PRI) limit 2;(禁止使用主键)
select * from table ignore index(ziduan1_index) limit 2;(禁止使用索引"ziduan1_index")
select * from table ignore index(PRI,ziduan1_index) limit 2;(禁止使用索引"PRI,ziduan1_index")

Das obige ist der detaillierte Inhalt vonWerden MySQL-Indizes automatisch verwendet?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

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