加入收藏 | 设为首页 | 会员中心 | 我要投稿 财气旺网 - 财气网 (https://www.caiqiwang.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MySql教程 > 正文

MySQL-分页查询(Limit用法)

发布时间:2022-09-16 15:17:51 所属栏目:MySql教程 来源:
导读:  对于比较多的数据,如果在一个页面全部显示,查看起来会眼花缭乱。如果能进行分页显示,将更加快捷、清新的浏览!

  这样,我们也容易查看前几条或者中间某几行数据。

  语法(格式):SELECT*FROMt
  对于比较多的数据,如果在一个页面全部显示,查看起来会眼花缭乱。如果能进行分页显示,将更加快捷、清新的浏览!
 
  这样,我们也容易查看前几条或者中间某几行数据。
 
  语法(格式):SELECT*FROMtableLIMIT[offset,]rows|rowsOFFSEToffset;
 
  说明:LIMIT 子句可以被用于强制 SELECT 语句返回指定的记录数。LIMIT 接受一个或两个数字参数。参数必须是一个整数常量。如果给定两个参数,第一个参数指定第一个返回记录行的偏移量(索引),第二个参数指定返回记录行的最大数目(显示的个数)。初始记录行的偏移量是 0(而不是 1): 为了与 PostgreSQL 兼容,MySQL 也支持句法: LIMIT # OFFSET #。
 
  例如:对product表进行分页查询:
 
  SELECT * FROM product LIMIT 0,3;
 
  SELECT * FROM product LIMIT 3,3;
 
  以上2条语句执行之后,可以看到,索引第一个是0,第二个是3,而后面的(显示的个数)都是3。
 
  不难看出,startIndex = (index-1)*3 startIndex是索引值,index是页数,3是显示的个数。
 
  另外,我们看看以下两种写法的显示结果:
 
  1.SELECT * FROM product LIMIT 2,3;
 
  我们反过来推算,2对应pid从3开始,0对应pid从1开始,同样都是显示3条数据,那么1对应pid应该是从2开始
 
  显示结果正如猜测一致!
 
  简单理解,索引(如:0)对应数据表的第1条数据(如:product的pid的值为1);显示的个数3,就是每次每页显示的数据3条。
 
  2.SELECT * FROM product LIMIT 3;
 
  不难看出,我们是省去了索引值(只给定一个参数),它表示返回最大的记录行数目(如:3)。
 
  如果改成5,也就会显示前5条记录
 
  Mysql的分页查询语句的性能分析
 
  MySQL的LIMIT语法相对其他的数据库(语句、语法)显得优雅,使用LIMIT来分页效率更高!
 
  最基本的分页方式:SELECT...FROM...WHERE...ORDERBY...LIMIT...
 
  在中小数据量的情况下,这样的SQL足够用了,唯一需要注意的问题就是确保使用了索引。
 
  子查询的分页方式:
 
  随着数据量的增加,页数会越来越多,查看后几页的SQL,例如:
 
  然而,就是越往后分页,LIMIT语句的偏移量就会越大,速度也会明显变慢。
 
  此时,我们可以通过子查询的方式来提高分页效率,大致如下:
 
  JOIN分页方式:
 
  例如:
 
  可以进行测试,join分页和子查询分页的效率基本在一个等级上,消耗的时间也基本一致。
 
  为什么会这样呢?因为子查询是在索引上完成的,而普通的查询时在数据文件上完成的,通常来说,索引文件要比数据文件小得多,所以操作起来也会更有效率。
 
  实际可以利用类似策略模式的方式去处理分页,比如判断如果是一百页以内,就使用最基本的分页方式mysql分页,大于一百页,则使用子查询的分页方式。
 

(编辑:财气旺网 - 财气网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!