Kromě primárního klíče nemáte žádné indexy. Musíte vytvořit index pro pole, která používáte v příkazu WHERE. Pokud potřebujete indexovat pouze 1 pole nebo kombinaci několika polí, závisí na ostatních SELECTech, které budete proti této tabulce spouštět.
Mějte na paměti, že REGEXP nemůže vůbec používat indexy, LIKE lze použít index pouze v případě, že nezačíná zástupným znakem (takže LIKE 'a%' můžete použít index, ale LIKE '%a' nelze), větší než / menší než (<>) obvykle také nepoužívejte indexy.
Zbývá vám tedy code a check pole. Předpokládám, že mnoho řádků bude mít stejnou hodnotu pro check , takže bych index začal code pole. Vícepolní indexy lze použít pouze v pořadí, v jakém jsou definovány...
Představte si index vytvořený pro pole code, check . Tento index lze použít ve vašem dotazu (kde klauzule WHERE obsahuje obě pole), také v dotazu pouze s code pole, ale ne v dotazu pouze s check pole.
Je důležité ORDER BY id ? Pokud ne, vynechejte to, zabrání to průchodu řazení a váš dotaz bude dokončen rychleji.