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.