昨天新建了一个免费看小说的网站,但是随着数据量的增多,我发现进入某一本小说的页面后竟然耗时十多秒,这就尴尬了,当时就觉得是不是没有建立索引的原因,会来用explain命令查看了一下,果然,进行了全变扫描。
开始我的执行查询语句如下,根据小说bookid查询20篇章节数据:
SELECT id,chapter_title FROM chapter WHERE bookid=489568390000000 order by sort asc LIMIT 20
发现要耗时5秒左右,加上explain后如下:
explain SELECT id,chapter_title FROM chapter WHERE bookid=489568390000000 order by sort asc LIMIT 20
可以看到,type里是ALL,很明显是进行了全表扫描,然后我对bookid添加了普通索引:
ALTER TABLE chapter ADD INDEX index_bookid (bookid);
再执行查询语句,发现只用了0.011秒,也就是11毫秒,速度提升了454倍,再执行以下explain,结果如下,type变为了ref.
至此,优化成功,开心。