使用Oracle数据库时的Web分页方法
2007-05-07 12:07:51 来源:WEB开发网我们可以根据执行计划第二列的数字来阅读计划,即数字大的最先执行,如“5 index (range scan)”,数字相等时,按从上到下的顺序执行。上述执行计划显示了与我们估计相同的顺序,我们看到满足where条件的记录一共5263条左右(第4步中的 card=5263),它们全部被取出,并参与排序(第3步),并在将结果集返回给用户前,一直在处理所有的5263条记录。然而事实上用户似乎只关心本页即20条记录。显然它与我们关于数据库处理量最小的要求相距甚远。在分析部分,284个一致读进一步说明数据库处理了所有满足条件的记录(整个表占1039个数据块,共4个拥有相近产品数的行业,则每个行业约占259个数据块)。
现在,我们把上述语句换成:rudolf@TEST902>select * from t
2 where category = &category_id
3 order by product_name
4
将满足条件的所有记录取到客户端(在这里为WEB应用服务器),然后利用编程语言对结果集分页。以JAVA为例,可以使用ResultSet对象方法absolute直接定位记录而方便地将结果集分页。然而很显然,它甚至满足关于数据库与WEB应用服务器之间的数据量传输最小的要求,很多情况下将明显影响性能,严重时甚至会导致WEB应用服务器一端内存溢出。言归正传,我们开始引入我们的方法。
方法一:同分析传统做法类似,我们先列出我们的方法:rudolf@TEST902>select * from
2 ( select rownum rnm, a.* from
3( select * from t where category = &category_id
4order by category,product_name
5) a where rownum <= &maxrnm
6 ) where rnm >= &minrnm
7
- ››使用linux中的quota教程
- ››oracle 中 UPDATE nowait 的使用方法
- ››Oracle ORA-12560解决方法
- ››Oracle 10g RAC 常用维护命令
- ››Oracle如何在ASM中定位文件的分布
- ››使用jxl生成带动态折线图的excel
- ››Oracle的DBMS_RANDOM.STRING 的用法
- ››oracle 外部表导入时间日期类型数据,多字段导入
- ››Oracle中查找重复记录
- ››oracle修改用户登录密码
- ››Oracle创建删除用户、角色、表空间、导入导出等命...
- ››Oracle中登陆时报ORA-28000: the account is lock...
更多精彩
赞助商链接