1. HintergrundDa es in letzter Zeit häufig zu Problemen mit der Systemleistung durch langsame SQL-Anweisungen kam, haben wir uns entschlossen, die Indizes zu optimieren. Einige Tabellenstrukturen haben bereits viele Indizes. Wenn Sie weiterhin Indizes hinzufügen, wirkt sich dies zwangsläufig auf die Leistung beim Einfügen von Daten aus. Ist es also möglich, das Ziel mit einem kombinierten Index zu erreichen? Werfen wir in diesem Artikel einen Blick darauf. 2. Zusammengesetzte Indizes verstehen Wenn in der Was sind die Vorteile kombinierter Indizes?
Mangel:
Empfehlungen zur Verwendung zusammengesetzter Indizes: Eine einzelne Tabelle sollte nicht mehr als einen zusammengesetzten Index haben und ein einzelner zusammengesetzter Index sollte nicht mehr als drei Felder haben. Bei Überschreitung muss die Notwendigkeit und die Möglichkeit anderer Alternativen geprüft werden. 3. Prinzip der Übereinstimmung ganz links Zusammengesetzte Indizes folgen dem Prinzip der Übereinstimmung ganz links. Wie der Name schon sagt, wird in einem zusammengesetzten Index zuerst das Feld ganz links abgeglichen. Daher wird beim Erstellen eines zusammengesetzten Indexes das am häufigsten verwendete Feld in Der Hilfsindex wird durch einen B+-Baum implementiert. Obwohl mehrere Spalten angegeben werden können, ist die Vergleichspriorität jeder Spalte unterschiedlich, und die davor geschriebene hat eine höhere Priorität. Sobald eine Auslassung auftritt, kann die Suche im B+-Baum nicht fortgesetzt werden (es sei denn, das Problem wird durch Maßnahmen wie das Ausfüllen der Lücken behoben). Daher wird die Suche entsprechend der am weitesten links stehenden kontinuierlichen Übereinstimmung durchgeführt. Da die Suche auf einem B+-Baum erfolgt, ist für den Vergleich der Bedingungen natürlich eine exakte Übereinstimmung (also "=" und "IN") erforderlich. In der Der richtige Ansatz besteht darin, denjenigen mit den am wenigsten wiederholten Werten an den Anfang zu stellen. Wenn beispielsweise 95 % der Werte eindeutig sind, können Sie erwägen, diese an den Anfang zu stellen. 4. Einfluss der Feldreihenfolge Der zusammengesetzte Index folgt dem Übereinstimmungsprinzip „ganz links“. Müssen die Felder in Wenn der zusammengesetzte Index beispielsweise (c1, c2, c3) ist, wirken sich die folgenden beiden Abfragebedingungen auf den Index aus? wähle * aus t_user, wobei c1 = 1 und c2 = 4; Wählen Sie * aus t_user, wobei c2 = 4 und c1 = 1; Ich habe einen Artikel gelesen, in dem behauptet wurde, die erste SQL-Anweisung sei effizienter. Ist das glaubwürdig? Die beiden Abfragemethoden haben dieselben Bedingungen und die Ergebnisse sollten dieselben sein. Normalerweise lässt Durch die Analyse der beiden obigen Anweisungen mit dem Wenn es Auswirkungen auf die Effizienz gibt, handelt es sich wahrscheinlich um Auswirkungen der Korrekturreihenfolge des Abfrageoptimierers, die nahezu vernachlässigbar sind. 5. Kann ein einzelnes Feld einen Index auslösen?Bei einem zusammengesetzten Index von (c1, c2, c3), der drei Indizes (c1), (c1, c2), (c1, c2, c3) entspricht, ist es offensichtlich, dass der Index verwendet wird, wenn in der Abfragebedingung nur c1 vorhanden ist. Was aber, wenn die Where-Bedingung wie folgt lautet: von t_user, wobei c2 = 4; Wird die obige Anweisung den Index verwenden? Dies kann in mehreren Situationen erklärt werden. Führen Sie die SQL-Anweisung mit „explan query c1“ als Bedingung aus: Erläutern Sie „select * from t_user“, wobei c1 = 1; Der Indextyp der obigen Anweisung ist: ref. Der Ref-Typ bedeutet, dass MySQL basierend auf einem bestimmten Algorithmus schnell den Index findet, der die Bedingungen erfüllt, ohne jedes einzelne Datenstück im Index zu scannen und zu beurteilen. Um Daten schnell zu finden, muss dieser Indextyp bestimmte Datenstrukturen erfüllen. Führen Sie die SQL-Anweisung mit „explan query c2“ als Bedingung aus: Erklären Sie „Select c2 from t_user“, wobei c2 = 4; Der Indextyp der obigen Anweisung ist: In diesem Beispiel gibt es bestimmte Anforderungen an die abgefragten Felder. Die Bedingung in Wenn c2 durch * oder andere Felder ersetzt wird: Erklären Sie „Select * from t_user“, wobei c2 = 4; Die obige Anweisung stellt fest, dass der Index nicht mehr verwendet wird, aber ein vollständiger Tabellenscan durchgeführt wird. Dies erklärt auch, warum MySQL dem Prinzip der äußersten linken Übereinstimmung folgt. Die Schlussfolgerung lautet also: Wenn ein einzelnes Feld das erste Feld eines zusammengesetzten Indexes ist, wird der Index normal verwendet. Wenn ein einzelnes Feld ein weiteres Feld eines zusammengesetzten Indexes ist und nur dieses Feld nach 7. Kann ein zusammengesetzter Index einen einzelnen Index ersetzen?Einzelindex: (c1) Zusammengesetzter Index: (c1, c2). Wenn c1 als Abfragebedingung verwendet wird, ist die Abfragegeschwindigkeit eines einzelnen Indexes fast dieselbe wie die eines zusammengesetzten Indexes oder sogar etwas schneller als die eines zusammengesetzten Indexes. Wenn nur die nicht startende Spalte (c2) des zusammengesetzten gruppierten Indexes als Abfragebedingung verwendet wird, hat der zusammengesetzte Index keine Wirkung. Wenn für eine Tabelle ein zusammengesetzter Index (c1, c2) vorhanden ist, muss kein einzelner Index (c1) erstellt werden. Wenn bereits ein einzelner Index (c1) vorhanden ist, kann zur Verbesserung der Effizienz bei Bedarf für die Abfrage ein zusammengesetzter Index (c1, c2) hinzugefügt werden. Zusammenfassung: Dieser Artikel fasst einige Wissenspunkte zusammen, die Sie bei der Verwendung von MySQL-Verbundindizes beachten müssen. Bei der Verwendung können Sie mithilfe von „explain“ überprüfen, ob Ihre SQL-Anweisung den Index verwendet und welchen Index sie verwendet. Sie müssen sich jedoch auch darüber im Klaren sein, dass der Ausführungsplan von MySQL und der tatsächliche Ausführungsprozess der Abfrage nicht vollständig übereinstimmen. Fragen Sie mich nicht, woher ich das weiß, denn ich habe es in der Praxis erlebt. Für dieselbe SQL-Anweisung kann der Index abhängig von den Abfragebedingungen verwendet werden oder nicht. Dies ist das Ende dieses Artikels über die Zusammenfassung der MySQL-Verbundindizes. Weitere relevante Inhalte zu MySQL-Verbundindizes finden Sie in früheren Artikeln auf 123WORDPRESS.COM oder in den folgenden verwandten Artikeln. Ich hoffe, dass jeder 123WORDPRESS.COM in Zukunft unterstützen wird! Das könnte Sie auch interessieren:
|
<<: Detaillierte Erläuterung der Konfigurationsmethode des Vue-Anforderungs-Interceptors
>>: Verschiedene Möglichkeiten zum Ändern der Hintergrundbildfarbe mit CSS3
1. Abfragegeschwindigkeit von zwei Abfrage-Engine...
Inhaltsverzeichnis 1. Einzelne Datenbanksicherung...
Inhaltsverzeichnis Verwendete APIs Einfaches Beis...
PS: Ich habe kürzlich das Nginx-Kapitel von <&...
Es gibt offensichtliche Unterschiede zwischen der...
Inhaltsverzeichnis Was ist Axios? Axios-Anforderu...
1. Lösung für das Problem, dass die Seite leer is...
Wenn MySQL zig Millionen Daten abfragt, können di...
1. Laden Sie die VMware Workstation 64-Version he...
1. Befehlseinführung Mit dem Befehl seq (Sequence...
<br />Jede Familie hat ihre eigenen Probleme...
In diesem Artikel wird der spezifische Code zur I...
Detaillierte Erläuterung der Lösung für verstümme...
Heute bin ich auf das MySQL-Dienstfehlerproblem 1...
Effektanzeige: Controllerknoten zur Umgebungsvorb...