Индекс — это отдельная, отсортированная структура данных (B-дерево в InnoDB), которая позволяет MySQL находить строки без сканирования всей таблицы. Без него поиск читает каждую строку (полное сканирование таблицы); с ним — проходит по дереву за несколько шагов.
Первичный против вторичного
В InnoDB сама таблица является индексом первичного ключа — кластеризованным индексом. Строки физически хранятся в порядке первичного ключа, поэтому поиск по первичному ключу попадает прямо в полную строку.
