InnoDB používá seskupené primární klíče, takže primární klíč je uložen spolu s řádkem na datových stránkách, nikoli na samostatných stránkách indexu. Chcete-li provést skenování rozsahu, musíte stále procházet všechny potenciálně široké řádky na datových stránkách; všimněte si, že tato tabulka obsahuje sloupec TEXT.
Dvě věci bych zkusil:
- spusťte
optimize table
. To zajistí, že datové stránky budou fyzicky uloženy v setříděném pořadí. To by mohlo případně urychlit skenování rozsahu na seskupeném primárním klíči. - vytvořte další neprimární index pouze ve sloupci change_event_id. Tím se uloží kopie tohoto sloupce na indexové stránky, jejichž skenování je mnohem rychlejší. Po jeho vytvoření zkontrolujte plán vysvětlení a ujistěte se, že používá nový index.
(pravděpodobně také budete chtít, aby byl sloupec change_event_id velký nepodepsaný pokud se zvyšuje od nuly)