Какой индекс поставить в таблицу mysql?
При построении составных индексов учитывайте то, какой объем данных у вас будет попадать на первый и второй индекс. Выполнив два запроса SELECT lastname_id, count(*) FROM t GROUP BY lastname_id и SELECT firstname_id, count(*) FROM t GROUP BY firstname_id , можно увидеть, сколько записей содержит каждое значение колонки в таблице. Там, где меньше - ту колонку и нужно ставить первой в индекс, так как если среднее кол-во значений  lastname_id будет равно 1000, а firstname_id - 20000, то MySQL сразу сократит количество перебираемых записей до 1000, вместо 20000.
Так же советую почитать про EXPLAIN - очень помогает находить тяжелые запросы и лучше понять, как MySQL делает поиск.
Если у вас стоит составной индекс на три поля lastname_id, firstname_id и rate, то автоматически mysql создает индекс для каждого поля в отдельности. Индексы ставятся на те поля, по которым идет поиск в запросах. В данном случае у вас правильно настроены индексы, если исходить из вашего SQL-запроса.