select no,
corpName,
prodName,
address,
proadd,
testWay,
TO_CHAR(startdate, 'YYYY-MM-DD') startdate,
TO_CHAR(deadline, 'YYYY-MM-DD') deadline,
agencies,
batch,
status,
changeDate,
importDate,
res,
writeOffTime,
writeOffDepart
from ( select t1.*,
row_number() over(order by no) rn
from licenceinfo t1
where status = 3
and add_months(deadline, 6) >= sysdate
)
where rn between 600 and 900;看看这种写法效果如何呢?猜测效率低是因为两表自连引起的。
corpName,
prodName,
address,
proadd,
testWay,
TO_CHAR(startdate, 'YYYY-MM-DD') startdate,
TO_CHAR(deadline, 'YYYY-MM-DD') deadline,
agencies,
batch,
status,
changeDate,
importDate,
res,
writeOffTime,
writeOffDepart
from ( select t1.*,
row_number() over(order by no) rn
from licenceinfo t1
where status = 3
and add_months(deadline, 6) >= sysdate
)
where rn between 600 and 900;看看这种写法效果如何呢?猜测效率低是因为两表自连引起的。
解决方案 »
- 有ORACLE 9I FOR linux4 as4 x64 64BIT的版本嘛?
- 【棘手问题】如何求如下情况的最小和最大日期????
- oracle递归,只显示up_id=根节点的问题
- 求助高手:闪回查询遇到ORA-01555错误!(补救数据,急哦!)
- 【高分]急求个SQL语句!oralce
- 【新年快乐】求一个简单的oracle触发器,可是我不会写
- spool脚本里想打印出PL里执行SQL结果
- 一个简单的问题,关于多表联接查询.
- 关于rman问题
- 如何在Oracle数据库写存储过程访问MySql数据库
- 用Loadfromfile写入BLOB的jpg文件读取问题
- 关于Proc中动态SQL语句的PREPARE问题 --解决办法
corpName,
prodName,
address,
proadd,
testWay,
TO_CHAR(startdate, 'YYYY-MM-DD') startdate,
TO_CHAR(deadline, 'YYYY-MM-DD') deadline,
agencies,
batch,
status,
changeDate,
importDate,
res,
writeOffTime,
writeOffDepart
from ( select t1.*,
row_number() over(order by no) rn
from licenceinfo t1
where status = 3
and deadline >= add_months(sysdate, -6)
)
where rn between 600 and 900;
目测,楼主的分页方法,还算比较高效。而12w数据,这个速度太慢了。是不是索引没有用好?你那个deadline是函数索引吗,看看2楼的写法。
再者,不用exist ,用in试下,rowid的话,不用在关联了吧,直接寻址即可。