1.分页查询之前先按索引排序
我们经常会上一些小说网站看小说,他们总是会把最近更新了的小说放在最前面,也就是第一页,而很久没更新的就放在后面了。那么这样网站是如何实现的呢?我的猜想有一张小说表,表里面一个last_update表示最后更新字段,并且对这个字段建立了索引,按last_update从大到小排序之后再按需求的页面大小进行分页。
那为什么分页查询总是要排序呢?
由上面的例子可以看出,这个是需求导致的,而且还有效率因素。下面举例说明:
表的描述如下:
只有id主键索引。
假设我们需要前三条数据,执行sql【explain select * from t1 limit 3;】
因为我们没有进行排序,mysql不知道要哪前三条,是id大呢,还name大呢?,mysql晕了,只能进行全表扫描来获取数据表的前三条数据了。所以范围类型为ALL。