Czy istnieje skuteczny sposób indeksowania znaku kolumny DECIMAL za pomocą MySQL (InnoDB)?
Mam zapytanie o warunek where amount > 0
(i na odwrót) i zastanawiam się, czy istnieje jakiś wymyślny sposób na przyspieszenie. W ten sam sposób, w jaki indeksowanie pierwszego znaku ciągu może przyspieszyć takie zapytanie select distinct left(some_string_column, 1)
.
Odpowiedzi:
1 dla odpowiedzi № 1Indeksowanie kolumny dziesiętnej pomoże MySQL zwrócić wynik tam, gdzie column > 0
.
CREATE INDEX signindex ON table(deccolumn);
Poza tym, aby umożliwić MySQL efektywne używanie indeksów i unikanie używania funkcji w where
, możesz dodać nową kolumnę, która ma wstępnie obliczone dane i indeksować tę nową kolumnę
ALTER TABLE table ADD leftchar char(1);
UPDATE table SET leftchar=left(some_string_column, 1);
CREATE INDEX charindex ON table(leftchar);
SELECT DISTINCT leftchar FROM table;