在查询我们想要的结果集时,有时候返回的结果集中包含的记录数量很大,不仅影响查询效率,而且我们只需要查看其中一部分记录就可以达到目的,这时就要对结果集进行分页,让其只返回结果集的一部分。
但是在使用分页查询的时候,又搞不清对应位置的数字表示什么含义,真是等到用时方恨不知,故以此文以作记录,方便日后查看。
常用分页查询的方式有两种:LIMIT、LIMIT .. OFFSET ...
第一种:LIMIT
语句的书写格式是:
SELECT * FROM information_demo LIMIT 1,3 ;
我们可以看到,LIMIT 后面紧跟了两个数字,此时第一个数字表示的含义是:要跳过的记录数量 ;第二个数字表示的含义是:要取的记录数量。
所以上面这个查询语句整体的意思是:
在 information_demo 这个表中,跳过1条数据,从第2条数据开始取,取3条数据,也就是取第 2、3、4 这三条数据。
第二种:LIMIT .. OFFSET ...
offset 在中文里有“偏移量”的意思,这样就能更好地记住 offset 后面的数字所表示的含义。
语句的书写格式是:
SELECT * FROM information_demo LIMIT 3 OFFSET 1 ;
此时 LIMIT 与 OFFSET 组合使用,LIMIT 后面只紧跟一个数字,表示:要取的数量 ;OFFSET后面的数字表示:要跳过的记录数量。
所以上面这个查询语句整体的意思是:
在 information_demo 这个表中,跳过1条数据,从第2条数据开始取,取3条数据,也就是取第 2、3、4 这三条数据。
说明:在第二种的语法里, OFFSET 是可选的,当 OFFSET 后面数字为0(即不需要跳过数据)时,OFFSET 可省略,直接写成 LIMIT ...
eg :
SELECT * FROM information_demo LIMIT 3 ;
-- 从这个表里取3条数据,展示它们所有列的信息
我们发现:
以上两种分页查询可以互相转换,转换的规则就是前后两个数字对调位置。
注:分页查询时,数据库服务器是 在先查询到的结果集中按照我们的要求跳过一定数量后,再依次去取数,而这个先查询到的结果集本身是有顺序的。所以 offset 后面的数字越大,数据库服务器在查询时需要跳过的数据量就越多,查询效率就会越低。