Erstellen eines Index für den Datumsteil des DATETIME-Felds in MySQL
In MySQL Abfragen mithilfe einer Funktion für eine Spalte, z. B. Datum (TranDateTime) kann den Index umgehen, was zu einer langsamen Leistung führt. Um Abfragen für den Datumsteil eines DATETIME-Felds zu optimieren, sollten Sie stattdessen einen Index für diesen Teil erstellen.
Das Problem
Eine große Tabelle mit einem DATETIME-Feld namens TranDateTime Es kam zu einer langsamen Leistung beim Abfragen von Datensätzen zu einem bestimmten Datum mit:
SELECT * FROM transactionlist WHERE date(TranDateTime) = '2008-08-17'
The Lösung
Um die Leistung zu verbessern, erstellen Sie einen Index für den Datumsteil von TranDateTime, indem Sie die folgende Abfrage verwenden:
CREATE INDEX idx_TranDate ON transactionlist (DATE(TranDateTime))
Dieser Index ermöglicht es MySQL, Datensätze basierend auf effizient abzurufen Datumsteil des TranDateTime-Felds, wodurch die folgende Abfrage optimiert wird:
SELECT * FROM transactionlist WHERE DATE(TranDateTime) = '2008-08-17'
Additional Überlegungen
Um die Verwendung einer Funktion in der Abfrage zu vermeiden, sollten Sie alternativ die Verwendung einer Bereichsabfrage in Betracht ziehen:
SELECT * FROM transactionlist WHERE TranDateTime BETWEEN '2008-08-17' AND '2008-08-17 23:59:59.999999';
Diese Abfrage sollte alle Datensätze abrufen, die am 17.08.2008 aufgetreten sind , auch solche mit Zeitkomponente.
Das obige ist der detaillierte Inhalt vonWie kann ich MySQL-Abfragen für den Datumsteil eines DATETIME-Felds optimieren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!