WEB开发网
开发学院数据库Oracle 使用Oracle数据库时的Web分页方法 阅读

使用Oracle数据库时的Web分页方法

 2007-05-07 12:07:51 来源:WEB开发网   
核心提示: 我们可以根据执行计划第二列的数字来阅读计划,即数字大的最先执行,使用Oracle数据库时的Web分页方法(3),如“5 index (range scan)”,数字相等时,言归正传,我们开始引入我们的方法,按从上到下的顺序执行,上述执行计划显示了与我们估计相同的顺序

我们可以根据执行计划第二列的数字来阅读计划,即数字大的最先执行,如“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

上一页  1 2 3 4  下一页

Tags:使用 Oracle 数据库

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接