我有一個表(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