Es gibt einen großen Unterschied in der Leistung, wenn sie über DATETIME- Feld DATE Feld. Ich habe eine Tabelle mit mehr als 4.000.000 Datensätzen und zu Testzwecken habe ich zwei Felder mit jeweils einem eigenen Index hinzugefügt. Einer verwendet DATETIME und das andere Feld verwendet DATE.
ich deaktiviert MySQL Query-Cache in der Lage richtig zu testen und geschlungen über die gleiche Abfrage für 1000x:
SELECT * FROM `logs` WHERE `dt` BETWEEN '2015-04-01' AND '2015-05-01' LIMIT 10000,10;
DATETIME- INDEX: 197,564 Sekunden.
SELECT * FROM `logs` WHERE `d` BETWEEN '2015-04-01' AND '2015-05-01' LIMIT 10000,10;
DATUM INDEX: 107,577 Sekunden.
Die Verwendung eines Datumsindizierten Feldes hat eine Leistungsverbesserung von: 45,55% !!
Also würde ich sagen, wenn Sie eine Menge Daten in Ihrer Tabelle erwarten, beachten Sie bitte bei der Trennung des Datums von der Zeit mit ihrem eigenen Index.
Ich überlege, auf separate Datums- und Uhrzeitfelder umzuschalten.Meine Situation ist, dass ich in der Lage sein muss, TBD-Zeiten zu speichern, wenn ich das Datum kenne. Momentan verwende ich 12AM als meinen Wert für 'TBD'-Zeiten, aber es erweist sich als mehr Mühe, als ich möchte. Hat jemand eine bessere Lösung für TBD-Zeiten gefunden? oder hat mein vorgeschlagener Methodenarbeiter besser für sie? –