Nie masz żadnych indeksów poza kluczem podstawowym. Musisz zrobić indeks na polach, których używasz w swoim oświadczeniu WHERE. Jeśli chcesz zindeksować tylko 1 pole lub kombinację kilku pól, zależy to od innych SELECTów, które będziesz uruchamiać względem tej tabeli.
Pamiętaj, że REGEXP
nie można w ogóle używać indeksów, LIKE
może używać indeksu tylko wtedy, gdy nie zaczyna się od symbolu wieloznacznego (więc LIKE 'a%'
może używać indeksu, ale LIKE '%a'
nie może), większy niż / mniejszy niż (<>) zwykle nie używaj również indeksów.
Pozostaje ci więc code
i check
pola. Przypuszczam, że wiele wierszy będzie miało tę samą wartość dla check
, więc zacząłbym indeks od code
pole. Indeksy wielopolowe mogą być używane tylko w kolejności, w jakiej są zdefiniowane...
Wyobraź sobie indeks utworzony dla pól code, check
. Ten indeks może być użyty w zapytaniu (gdzie klauzula WHERE zawiera oba pola), także w zapytaniu zawierającym tylko code
pole, ale nie w zapytaniu z tylko check
pole.
Czy ważne jest, aby ORDER BY id
? ? Jeśli nie, pomiń to, ponieważ uniemożliwi to przebieg sortowania, a Twoje zapytanie zakończy się szybciej.