Вы должны попробовать индексировать (mode, инструкция_ид) в указанном порядке.
Причина этого индекса в том, что он создает такой индекс
mode instruction_id
A 1
A 3
A 4
A 5
A 10
A 11
B 2
B 8
B 12
B 13
B 14
C 6
C 7
C 9
C 15
C 16
C 17
Если вы ищетеВ режиме B сервер sql может выполнять поиск по индексу с помощью бинарного поиска в режиме, пока не найдет первый B, а затем может просто вывести следующие n
строки.Это было бы очень быстро, примерно 22 сравнения для строк 4M.
Всегда используйте ORDER BY
, если ожидаете, что результат будет упорядочен, независимо от того, как хранятся данные.Механизм запросов может выбрать план запроса, который выводит строки в другом порядке, чем порядок PK (возможно, не в таких простых случаях, как этот, но в целом).