我有一个表(book_list),其中有大约400万条记录。它有一个PK(book_list_id),当我运行查询像下面我得到的结果早在.060sMySQL缓慢订单索引列
select * from book_list bl ORDER BY bl.book_list_id LIMIT 25
现在,当我运行几乎相同的查询,但BOOK_TITLE这是VARCHAR(1200)排序,并索引,它需要34.7 s
select * from book_list bl ORDER BY bl.book_title LIMIT 25
有什么我可以做的,使第二个声明更快?
顺便说一句我也尝试了其他数字索引字段排序,他们也很慢。只有PK排序才能产生快速结果。
下面是创建表:
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
请,展后创建表。 – danihp
runing'explain ...'会告诉你什么? –
你有4百万册索引书吗? ;) – danihp