我有一个表(book_list)约有400万条记录。它有一个主键(book_list_id),当我运行像下面这样的查询时,我可以在0.060秒内得到结果。
select * from book_list bl ORDER BY bl.book_list_id LIMIT 25
现在,当我运行几乎相同的查询,但按照书名排序(它是varchar(1200)类型并且已经建立索引),需要34.7秒。
select * from book_list bl ORDER BY bl.book_title LIMIT 25
有没有什么方法可以让第二个语句更快?
顺便提一下,我还尝试了按其他数字索引字段排序,它们也非常慢。只有主键排序似乎产生了快速的结果。
这是创建表的代码:
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