Putting einen Index auf ein Datumsfeld in MySQL
-
27-09-2019 - |
Frage
Wird es ein wirklicher Nutzen sein, um mich Indizes auf Datumsfelder setzen, die vor allem in Abfragen verwendet werden wird mit Sachen wie.
dateField < 'var'
Und
'var' BETWEEN dateField1 AND dateField2
Die Durchsuchungen viel zu erledigen, aber ich bin nie einen direkten Vergleich „=“ auf sie zu tun.
Lösung
Ja, natürlich. Bereichssuchen werden von einem Index profitieren, ebenso wie Gleichheit sucht.
Zitiert aus dem MySQL Referenzhandbuch :: Wie MySQL Indizes benutzt :
B-Baum-Index Merkmale
Ein B-Baum-Index für Spalt Vergleiche in Ausdrücken verwendet werden, dass die Verwendung =,>,> =, <, <=, oder zwischen den Betreibern. Der Index kann auch für LIKE Vergleiche verwendet werden, wenn das Argument wie eine konstante Zeichenfolge, die nicht mit einem Platzhalter-Zeichen beginnt.
In einigen Situationen kann der Optimierer entscheiden, den Index nicht zu verwenden, wenn der Bereich zu groß sein wird, am Ende, wie ein Tabellenscan tatsächlich schneller sein könnte. Verwenden Sie EXPLAIN
zu sehen, welche (falls vorhanden) Indizes verwendet werden auf Ihre Anfrage.