Q: MySQL Slow Order BY on Index Column I have a table (book_list) that has about 4 million records. It has a PK (book_list_id) and when I run a query like below I get the results back in .060s 
 select * from book_list bl ORDER BY bl.book_list_id LIMIT 25

Now when I run the virtually same query but sorting by book_title which is varchar(1200) and is indexed, it takes 34.7 s
 select * from book_list bl ORDER BY bl.book_title LIMIT 25

Is there something I can do to make this second statement faster?
BTW I also tried sorting by other numeric indexed fields and they too are very slow. Only the PK sorting seems to produce fast results.
Here is the create table:
CREATE TABLE `book_list` (

`book_list_id` int(11) NOT NULL AUTO_INCREMENT,

`book_title` varchar(1200) CHARACTER SET utf8 DEFAULT NULL
 PRIMARY KEY (`book_list_id`),

 KEY `indx_book_title` (`book_title`(255))

 ) 
 ENGINE=InnoDB AUTO_INCREMENT=4733798 DEFAULT CHARSET=latin1


A: Bad performace is due to the fact that not all field is indexed, only firsts 255 characters. RDBS must compare 1200-255 characters to make the final order.
Increase the portion of field that is indexed or make the query to sort only by firsts 255 characters as  @Dmitry Beransky say:  'order by left(book_title, 255)'

A: Could you please try:
select * from book_list where book_list_id in
(select book_list_id from book_list order by book_title limit 25);

