Du har inga index förutom primärnyckeln. Du måste göra index på fält som du använder i din WHERE-sats. Om du bara behöver indexera ett fält eller en kombination av flera fält beror på de andra SELECT som du kommer att köra mot den tabellen.
Tänk på att REGEXP
kan inte använda index alls, LIKE
kan bara använda index när det inte börjar med jokertecken (så LIKE 'a%'
kan använda index, men LIKE '%a'
kan inte), större än / mindre än (<>) använder vanligtvis inte index också.
Så du har kvar code
och check
fält. Jag antar att många rader kommer att ha samma värde för check
, så jag skulle börja indexet med code
fält. Flerfältsindex kan endast användas i den ordning som de definieras...
Föreställ dig index skapat för fält code, check
. Detta index kan användas i din fråga (där WHERE-satsen innehåller båda fälten), även i frågan med endast code
fältet, men inte i fråga med endast check
fältet.
Är det viktigt att ORDER BY id
? Om inte, lämna det ute, det kommer att förhindra sorteringen och din fråga kommer att avslutas snabbare.