InnoDB używa klastrowych kluczy podstawowych, więc klucz podstawowy jest przechowywany wraz z wierszem na stronach danych, a nie na oddzielnych stronach indeksu. Aby wykonać skanowanie zakresu, nadal musisz przejrzeć wszystkie potencjalnie szerokie wiersze na stronach danych; zauważ, że ta tabela zawiera kolumnę TEKST.
Spróbowałbym dwóch rzeczy:
- uruchom
optimize table
. Zapewni to fizyczne przechowywanie stron danych w posortowanej kolejności. Może to prawdopodobnie przyspieszyć skanowanie zakresu klastrowanego klucza podstawowego. - utwórz dodatkowy indeks inny niż podstawowy tylko w kolumnie change_event_id. Spowoduje to zapisanie kopii tej kolumny na stronach indeksu, które będą znacznie szybsze do skanowania. Po utworzeniu sprawdź plan wyjaśniania, aby upewnić się, że używa nowego indeksu.
(prawdopodobnie chcesz też, aby kolumna change_event_id bigint była niepodpisana jeśli rośnie od zera)