2010-10-01 17 views
5

Czy przyniesie mi jakąkolwiek prawdziwą korzyść dla mnie umieszczenie indeksów na polach daty, które będą używane głównie w zapytaniach używających takich rzeczy jak.Umieszczanie indeksu na polu daty w MySQL

dateField < 'var' 

I

'var' BETWEEN dateField1 AND dateField2 

wyszukuje się zrobić wiele, ale nigdy nie robię bezpośredniego porównania "=" na nich.

Odpowiedz

16
Tak, oczywiście. Wyszukiwania zakresów skorzystają z indeksu, podobnie jak wyszukiwania równościowe.

Cytując z MySQL Reference Manual :: How MySQL Uses Indexes:

B-Tree Index Charakterystyka

indeks B-drzewo może być wykorzystywane do porównań kolumn w wyrażeniach wykorzystującymi =,>,> =, < , < = lub MIĘDZY operatorami. Indeks może być również użyty do porównań LIKE, jeśli argument LIKE jest stałym ciągiem, który nie zaczyna się od znaku wieloznacznego.

W niektórych sytuacjach optymalizator może zrezygnować z używania indeksu, jeśli zakres będzie zbyt duży, ponieważ skanowanie tabeli może być szybsze. Użyj EXPLAIN, aby sprawdzić, które (jeśli w ogóle) indeksy zostaną użyte w zapytaniu.