一、limit 基本实现方式

一般情况下,客户端通过传递 pageNo(页码)、pageSize(每页条数)两个参数去分页查询数据库中的数据,在数据量较小(元组百/千级)时使用 MySQL自带的 limit 来解决这个问题:

收到客户端{pageNo:1,pagesize:10} select * from table limit (pageNo-1) * pageSize, pageSize;收到客户端{pageNo:5,pageSize:30} select * from table limit (pageNo-1) * pageSize,pageSize;

在数据量较小的时候简单的使用 limit 进行数据分页在性能上面不会有明显的缓慢,但是数据量达到了 万级到百万级sql语句的性能将会影响数据的返回。这时需要利用主键或者唯一索引进行数据分页;

假设主键或者唯一索引为 good_id 收到客户端{pageNo:5,pagesize:10} select * from table where good_id > (pageNo-1) * pageSize limit pageSize; –返回good_id为40到50之间的数据

当需要返回的信息为顺序或者倒序时,对上面的语句基于数据再排序。order by ASC/DESC 顺序或倒序 默认为顺序

select * from table where good_id > (pageNo-1)*pageSize order by good_id limit pageSize; –返回good_id为40到50之间的数据,数据依据good_id顺序排列
每页显示10条:当前 118 120, 125倒序:      大   小      980  970 7 6 6 5 54 43 3221 19 98   下一页:  select     *   from     tb1   where     nid < (select nid from (select nid from tb1 where nid < 当前页最小值 order by nid desc limit 每页数据 *【页码-当前页】) A order by A.nid asc limit 1)   order by     nid desc   limit 10;  select     *   from     tb1   where     nid < (select nid from (select nid from tb1 where nid < 970 order by nid desc limit 40) A order by A.nid asc limit 1)   order by     nid desc   limit 10;上一页:  select     *   from     tb1   where     nid < (select nid from (select nid from tb1 where nid > 当前页最大值 order by nid asc limit 每页数据 *【当前页-页码】) A order by A.nid asc limit 1)   order by     nid desc   limit 10;  select     *   from     tb1   where     nid < (select nid from (select nid from tb1 where nid > 980 order by nid asc limit 20) A order by A.nid desc limit 1)   order by     nid desc   limit 10;

更多相关文章

  1. 《Android和PHP最佳实践》官方站
  2. android用户界面之按钮(Button)教程实例汇
  3. TabHost与RadioGroup结合完成的菜单【带效果图】5个Activity
  4. Android(安卓)UI开发第十七篇——Android(安卓)Fragment实例(Lis
  5. Android——Activity四种启动模式
  6. Android布局(序章)
  7. Android发送短信方法实例详解
  8. Android(安卓)读取资源文件实例详解
  9. android 蓝牙通讯

随机推荐

  1. 【进阶篇】Android学习笔记――TextInput
  2. Android毕设之Fragment+TabHost(三)
  3. Android(安卓)动画之TranslateAnimation
  4. It's Android Time—Google Android创赢
  5. 命令运行 andorid 模拟器
  6. Android关于EditText的一些常规用法,只输
  7. Android中限制EditText(输入框)文字输入长
  8. 【android】Android SDK 配置
  9. Android实现多语言
  10. Android开发之——布局实例