数据库的分页实现
来源:互联网 发布:c语言优先级口诀 编辑:程序博客网 时间:2024/04/29 12:18
MySQL中的分页实现技术:
mysql中分页查询有两种方式, 一种是使用COUNT(*)的方式,具体代码如下
SELECT COUNT(*) FROM foo WHERE b = 1;
SELECT a FROM foo WHERE b = 1 LIMIT 100,10;
另外一种是使用SQL_CALC_FOUND_ROWS
SELECT SQL_CALC_FOUND_ROWS a FROM foo WHERE b = 1 LIMIT 100, 10;
SELECT FOUND_ROWS();
select * from ( select rownum rn ,e.* from emp e ) where rn < 10 and rn > 5;
② 将最大值和最小值作为两个小于的条件,根据这两个条件产生两个结果集,也就是将最大值的结果集作为被减数,将最小值的结果集作为减数,【大结果集】- 【小结果集】的结果就是中间的那部分数据了。这要比第一种方法好了很多,至少他不会将emp整个表的load到内存中。但是这个写法也是有弊端的,例如emp中有1000条记录,我要查询第950~1000行的数据,这个时候这种写法就会首先将1000行数据load到数据库中生成最大值结果集,然后再load前950行数据生成最小结果集,再minus,这样算来,一共load了1950行的数据,就没有第一种方法快了。例如:
select rownum rn ,a.* from emp e where rownum < 10 minus select rownum rn ,e.* from emp e where rownum< 5
③最好的方法是第三种写法,首先根据最大值的限制,在第一次load emp的时候,就只拿到从1~最大值这些数据,然后生成一个带 rownum 的结果集,然后在外部的查询中将rownum小于最小值的数据剔掉。这样就尽可能少的load了数据,就算象之前那个例子,此写法也只load了1000行数据,与第一种写法的cost是相等的。
select * from ( select rownum rn ,e.* from emp e where rownum < 10 ) where rn > 5;
- 数据库的分页实现
- 数据库的分页实现
- derby数据库分页的实现
- 不同数据库的分页实现
- 非数据库数据源分页的实现
- SSH2实现数据库和界面的分页
- SSH2实现数据库和界面的分页
- 常见数据库的分页实现方案
- 常见数据库的分页实现方案
- 常见数据库的分页实现方案
- java实现对数据库的分页
- 轻松实现各数据库的分页查询
- PHP实现数据库的分页类
- 用数据库实现分页
- 数据库分页实现方式
- 分页 数据库实现
- 数据库实现分页
- 数据库分页实现
- 6大问题是建设网站时需要考虑的
- 村田惯性传感器的行业应用
- 攻击JavaWeb应用[9]-Server篇[2]
- Hibernate_util
- 博客搬家啦
- 数据库的分页实现
- 数据挖掘与数据建模步骤
- 简单文秘操作,让你的文字信息不能被复制,word转成pdf
- 解决Android手机 屏幕横竖屏切换
- 帧率、码流与分辨率的关系
- 孙鑫vc++利用多线程写一个聊天对话框 学习总结
- Java的平台无关性
- C++链表插入排序
- 攻击JavaWeb应用[8]-后门篇