Hintergrund In einer Tabelle wird das Feld „dataTime“ auf den Typ „varchar“ eingestellt, die gespeicherten Daten liegen im Datumsformat vor und es wird ein Index für das Feld eingestellt. Im Protokolldatensatz gibt es jedoch eine langsame Abfrage zu dieser Tabelle. Die Abfrageanweisung lautet: erkunden 1: Zuerst wurde angenommen, dass der Feldtyp „dataTime“ varchar sei, sodass MySQL den Index in Zeichenfolgenreihenfolge statt in Datumsgrößenreihenfolge sortierte. Bei der Durchführung von Bereichsabfragen konnte die Indexbereichspartitionierung daher nicht in Datumsreihenfolge durchgeführt werden. Also habe ich dataTime in den Typ datatime geändert und die Anweisung analysiert. Dabei habe ich festgestellt, dass es sich immer noch um einen vollständigen Tabellenscan handelte. 2: Ändern Sie den Wert der Abfragebedingung, Wählen Sie Anzahl(*) aus digitaltwin_meteorological, wobei Datenzeit > „2021-10-15“ ist; Das Ausführungsergebnis ist 3910. ERKLÄREN Sie, wählen Sie * aus digitaltwin_meteorological, wobei dataTime > '2021-10-15' ist; Das Ergebnis der SQL-Anweisungsanalyse ist ein vollständiger Tabellenscan: Wir ändern die Abfragebedingung auf 16, um zu sehen, wie viele Datensätze vorhanden sind: Wählen Sie Anzahl(*) aus digitaltwin_meteorological, wobei Datenzeit > „2021-10-16“ ist; Das Abfrageergebnis ist 2525. Analysieren wir die Abfrageanweisung für Nummer 16: ERKLÄREN Sie, wählen Sie * aus digitaltwin_meteorological, wobei dataTime > '2021-10-16' ist; Das Ausführungsergebnis ist eine Bereichsabfrage, die den Index verwendet: Daraus ist ersichtlich, dass MySQL bei einer großen Anzahl abgefragter Datensätze einen vollständigen Tabellenscan durchführt, da davon ausgegangen wird, dass ein vollständiger Tabellenscan effizienter ist. Wenn die Abfrage nur wenige Datensätze enthält, verwendet MySQL eine Indexabfrage. 3: Wir ändern dataTime in datetime. Müssen wir dann der Abfragebedingung Anführungszeichen hinzufügen? Wir entfernen die Anführungszeichen der dataTime-Abfragebedingung und sehen uns das Ergebnis an: ERKLÄREN Sie, wählen Sie * aus digitaltwin_meteorological, wobei dataTime > 2021-10-16;
Wählen Sie count(*) aus digitaltwin_meteorological, wobei dataTime > 2021-10-16 ist; Das Berechnungsergebnis ist 19714, also die Daten der gesamten Tabelle. Daher muss auch die Datums-/Uhrzeitabfragebedingung in Anführungszeichen gesetzt werden. 4: Bei der obigen Analyse geht es ausschließlich um dataTime im Fall des datetime-Typs. Der ursprüngliche Feldtyp ist varchar. Wenn wir ihn also in den Typ varchar ändern, gilt die obige Schlussfolgerung dann immer noch? Wir ändern den Typ und führen SQL erneut aus: ERKLÄREN Sie, wählen Sie * aus digitaltwin_meteorological, wobei dataTime > '2021-10-16' ist; Es ist ersichtlich, dass Abfrage Nr. 16 nach der Änderung zum Typ varchar zu einem vollständigen Tabellenscan statt einem Bereichsscan wird. ERKLÄREN Sie, wählen Sie * aus digitaltwin_meteorological, wobei dataTime > '2021-10-17' ist; Die Abfrage am 17. verwendeten Index ist eine Abfrage. Wir sehen, dass das Datenvolumen für den 17. 1749 beträgt. Zusammenfassen Aus der obigen Analyse können wir folgende Schlussfolgerungen ziehen: Dies ist das Ende dieses Artikels darüber, warum MySQL den Datumsfeldindex nicht verwendet. Weitere relevante Inhalte zum MySQL-Datumsfeldindex finden Sie in den vorherigen Artikeln von 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:
|
<<: Beispielcode, der gängige Grafikeffekte in CSS-Stilen zeigt
Der digitale Scrolleffekt auf großen Bildschirmen...
Anfänger können HTML lernen, indem sie einige HTM...
Rahmenstil Die Eigenschaft „Border-Style“ gibt an...
Mithilfe von Nginx-Protokollen lassen sich Benutz...
Inhaltsverzeichnis Überblick Einzelne Dateikompon...
Die Hintergrundfarbe der Tabelle kann über das At...
Mit dem img-Element können wir Bilder in HTML-Dok...
Inhaltsverzeichnis Hintergrund Frage Problemanaly...
Vorwort Bei Verwendung der MySQL-Datenbank muss s...
Inhaltsverzeichnis Problembeschreibung: Installat...
In diesem Artikel erfahren Sie, wie Sie mit Vue e...
Inhaltsverzeichnis 1. Vorteile von Proxy gegenübe...
Inhaltsverzeichnis verwenden Installieren Wie wir...
In diesem Artikelbeispiel wird der spezifische Co...
Vorwort In diesem Artikel sind einige allgemeine ...