Индекс не обязательно должен быть первичным, он может быть индексом для любого поля. Как сказал Quassnoi, вы можете указать структуру данных под индексом. Mysql предполагает, что это B-дерево по умолчанию. Таким образом, время поиска узла будет O (logn), если дерево сбалансировано, то есть B-дерево.
Если поле контакта не проиндексировано, БД будет линейно сканировать каждую запись и находить строку, пока не найдет ее. Это наихудший случай за O (n) время.