The “range” indicates that it performs a range scan of the index.
The “using filesort” has to do with your ORDER BY part of the query.
Some thoughts:
How many rows does the >90000 match?
Remember that all these rows has to be sorted due to your ORDER BY page_rank.
Create a combined index on (ID, page_rank) that way MySQL may use that to solve the sorting.
And as a last resort if you can’t limit it better in the WHERE clause then above didn’t help you, increase your sort_buffer_size because when that buffer is full mysql writes a temporary table to disk which slows down the query a lot.