MySql实现分页查询的SQL,mysql实现分页查询的sql语句
来源:互联网 发布:linux 文件夹权限 编辑:程序博客网 时间:2024/05/18 00:41
refs:
http://blog.csdn.net/sxdtzhaoxinguo/article/details/51481430
摘要: MySQL数据库实现分页查询的SQL语句写法!
一:分页需求:
客户端通过传递start(页码),limit(每页显示的条数)两个参数去分页查询数据库表中的数据,那我们知道MySql数据库提供了分页的函数limit m,n,但是该函数的用法和我们的需求不一样,所以就需要我们根据实际情况去改写适合我们自己的分页语句,具体的分析如下:
比如:
查询第1条到第10条的数据的sql是:select * from table limit 0,10; ->对应我们的需求就是查询第一页的数据:select * from table limit (1-1)*10,10;
查询第10条到第20条的数据的sql是:select * from table limit 10,20; ->对应我们的需求就是查询第二页的数据:select * from table limit (2-1)*10,10;
查询第20条到第30条的数据的sql是:select * from table limit 20,30; ->对应我们的需求就是查询第三页的数据:select * from table limit (3-1)*10,10;
二:通过上面的分析,可以得出符合我们自己需求的分页sql格式是:
select * from table limit (start-1)*limit,limit; 其中start是页码,limit是每页显示的条数。
三:当数据较多时
对上面的mysql语句说明:limit 10000,20的意思扫描满足条件的10020行,扔掉前面的10000行,返回最后的20行,问题就在这里,如果是limit 100000,100,需要扫描100100行,在一个高并发的应用里,每次查询需要扫描超过10W行,性能肯定大打折扣。文中还提到limit n性能是没问题的,因为只扫描n行。
第二部分:根据雅虎的几位工程师带来了一篇Efficient Pagination Using MySQL的报告内容扩展:在文中提到一种clue的做法,给翻页提供一些线索,
比如还是SELECT * FROM message ORDER BY id DESC,按id降序分页,每页20条,当前是第10页,当前页条目id最大的是10020,最小的是10000,
如果我们只提供上一页、下一页这样的跳转(不提供到第N页的跳转),那么:
下页:从id=10021~10040这页,代码如下:
上页:从id=9980~10000这页,SQL语句可以是:
不管翻多少页,每次查询只扫描20行。
解决大数据量翻页问题
1、将LIMIT M,N的查询改为LIMIT N
例如,使用LIMIT 10000,20,Mysql将需要读取前10000行,然后获取后面的20行 ,这是非常低效的,使用LIMIT N的方式,通过每页第一条或最后一条记录的id来做条件筛选,再配合降序和升序获得上/下一页的结果集 。
2、限制用户翻页数量
产品实际使用过程中用户很少关心搜索结果的第1万条数据。
3、使用延时关联
通过使用覆盖索引来查询返回需要的主键,再根据返回的主键关联原表获得需要的行,这样可以减少Mysql扫描那些需要丢弃的行数。
实例:
使用索引(sex,rating)进行查询:
- MySql实现分页查询的SQL,mysql实现分页查询的sql语句
- MySql实现分页查询的SQL,mysql实现分页查询的sql语句
- MySql实现分页查询的SQL,mysql实现分页查询的sql语句
- MySql实现分页查询的SQL,mysql实现分页查询的sql语句
- MySQL、Oracle分页查询的SQL语句
- 查询分页的SQL实现
- Oracle,SQl,MySql实现分页查询
- MySQL、Oracle和SQL Server的分页查询语句
- mysql 递归查询sql语句的实现
- 用标准的SQL语句实现查询记录的分页
- 用标准的SQL语句实现查询记录分页
- 用标准的SQL语句实现查询记录分页
- 用标准的SQL语句实现查询记录分页
- 利用标准的SQL语句实现查询记录分页
- 用标准的SQL语句实现查询记录分页
- sql语句转化为分页查询的一种实现
- MySQL的分页查询语句
- oracle与mysql分页查询语句sql
- 数据库恢复删除的数据
- iOS开发之单例模式
- C# Excel操作类ExcelHelper
- Api 编程 远程文件下载
- iOS 获取label上点击位置的字符位置
- MySql实现分页查询的SQL,mysql实现分页查询的sql语句
- PTC联手阿里云共同提高中国工业4.0认可度
- android实现弹窗和自定义弹窗
- Gson的使用讲解
- springMVC执行过程
- Spark学习笔记 --- RDD的创建
- WINDOWS特有的消息常量标识符
- 阿里云参与两大国家工程实验室获批,人工智能继续深入工业制造
- 【JQuery学习总结1 】 一些实用的JQuery代码片段收集(筛选,搜索,样式,清除默认值,多选等)