I'm trying to index this query:
SELECT SQL_NO_CACHE t.title, na.name, na.gender, cn.name
FROM title t JOIN cast_info ci ON t.id = ci.movie_id
JOIN name na ON ci.person_id = na.id
JOIN char_name cn ON ci.person_role_id = cn.id
JOIN movie_info_idx m ON t.id = m.movie_id
WHERE ci.nr_order < 3
AND t.kind_id = 1
AND m.info_type_id = 112
AND m.info < 11
AND ci.role_id IN (1,2)
ORDER BY m.info ASC;
Without index it's 0.77 sec. I've done this index:
CREATE INDEX index3_m ON movie_info_idx(movie_id, info_type_id, info(20));
CREATE INDEX index3_t ON title(kind_id, title(30));
CREATE INDEX index3_ci ON cast_info(movie_id, nr_order, role_id);
Now it's 13.48 sec. So, I'm doing something wrong. My idea was to order movie_info_idx and cast_info to make it easier for the title to access...
Here is the database:

Thanks for the help.
EDIT: I add what the query is for: List of films in the top 10 with the name of their main actors / actresses (nr_order <3), if it is an actor or actress and the name of the character they play in the film. Sort the result by the ranking in the top 10 of the movie.

explainresponse for your query?explain select ... rest of your query ...and update your question with result of this statement. It will contain information about how your query will be executed by SQL servertitletable, it is a reason of slowness. Do you see by yourself any conditions that can be applied to this table to reduce amount of fetched information?