好长时间没写东东了,今天写了一个oracle的分页存储过程,贴出来与大家分享。
由于。net框架中的gridview等控件的分页功能太弱,所以大部分程序员都会自己写分页功能,而调用分页存储过程是必须的。
前台aspx页面不管是用下载的dll还是用自己写的用户控件,都能实现自己的功能,然而分页的存储过程就需要好好的考虑了,下边是我写的oracle的存储过程(参考sql server数据库的存储过程写成的),效率还可以,并附上调试的过程(调试环境:win2003、oracle 9i,调试工具:pl/sql):
--I/O消耗1071
select id,orgid,dj_date,khid,khcode,khname,feeid from fee_ysfy;
--493408
select count(id) from fee_ysfy;
--22.391执行完成(内外都有order by)
select id, orgid, dj_date, khid, khcode, khname, feeid
from (select rownum rn, t.id, orgid, dj_date, khid, khcode, khname, feeid
from fee_ysfy t
where 1 = 1
order by id desc)
where rn <= 45
and rn >= 30
order by id desc
--22.437(只有子查询有order by)
select id, orgid, dj_date, khid, khcode, khname, feeid
from (select rownum rn, t.id, orgid, dj_date, khid, khcode, khname, feeid
from fee_ysfy t
where 1 = 1
order by id desc)
where rn <= 45
and rn >= 30
--优化去掉order by0.891(去掉所有的order by)
select id, orgid, dj_date, khid, khcode, khname, feeid
from (select rownum rn, t.id, orgid, dj_date, khid, khcode, khname, feeid
from fee_ysfy t
where 1 = 1
)
where rn <= 45
and rn >= 30
--将order by放到外边0.828秒(把order by放到外边)
select id, orgid, dj_date, khid, khcode, khname, fee
在 Oracle 中,对于已经建好的主键,是自动创建索引的,并且索引是创建到当前的表空间中的,如果要将索引更换到其它表空间,可以使用如下的方法,超简单:
alter index index_aaa rebuild tablespace newtablespace;
newtablespace 是新指定的表空间。 ......