最近遇到一个问题,需要对视图进行分页查询,但是查询的效率非常低,点击查询后根本就不动...
大家有没有能提高效率的好方法,
select *
from (select rownum r, t.*
from (select *
from v_all_subs a
where 1 = 1
and a.payuser like '139200000%'
order by a.productindex) t
where rownum <=10)
where r>= 0;
v_all_subs是视图,数据量在500万以上,
如果单纯使用select *
from v_all_subs a
where 1 = 1
and a.payuser like '139200000%'
order by a.productindex查询速度还可以.
但一旦使用分页查询速度就会慢很多..
视图里也已经使用了索引.但是并没有提高多少效率...
请高手指点一下,大家讨论讨论也是好的,看有没有什么办法可以进行改进....
大家有没有能提高效率的好方法,
select *
from (select rownum r, t.*
from (select *
from v_all_subs a
where 1 = 1
and a.payuser like '139200000%'
order by a.productindex) t
where rownum <=10)
where r>= 0;
v_all_subs是视图,数据量在500万以上,
如果单纯使用select *
from v_all_subs a
where 1 = 1
and a.payuser like '139200000%'
order by a.productindex查询速度还可以.
但一旦使用分页查询速度就会慢很多..
视图里也已经使用了索引.但是并没有提高多少效率...
请高手指点一下,大家讨论讨论也是好的,看有没有什么办法可以进行改进....
解决方案 »
- oracle大表清除,空间可以继续使用吗?
- 求windows 32位版oracle 10g gateways安装文件
- 这条SQL语句的(+)是什么意思啊
- Oracle 事务嵌套[if(true)then insert1 end if; insert2]
- 一条sql语句可以同时插入,删除两张表的数据么,怎么写(不用触发器,存储过程)
- ORACLE如何自定义排序?
- oracle 怎么这么难用啊?请教下
- DBMS_CHANGE_NOTIFICATION 问题,100分求答案
- proc 编译没错,执行出错,兄弟们看看,很简单的程序!
- SQL的join查询,不懂,到底怎么写?求详细代码
- 求教分析函数的使用方法和意义
- Creat Trigger 问题
比如取5到10条记录:
select v_all_subs.*
from(
select rid from (
select rid,rownum rn
from (
select rowid rid
from v_all_subs
where payuser like '139200000%'
order by a.productindex)
where rownum<=10)
where rn>=5) t,v_all_subs
where v_all_subs.rowid=t.rid;
from (select rid
from (select rid, rownum rn
from (select rowid rid
from v_all_subs
where payuser like '139200000%'
order by productindex)
where rownum <= 10)
where rn >= 5) t,
v_all_subs
where v_all_subs.rowid = t.rid;数据库报错,"无法从含DISTINCT,GROUP BY 等子句的视图中选择ROWID"
那你看能不能直接从基表查询。
CREATE OR REPLACE VIEW v_all_subs AS
select *
from a, b, c, d
where a.index=b.index and a.cp=c.cp
UNION
SELECT a.* from a, b, c, d
where a.index=b.index and a.cp=c.cp
UNION
...........
select rownum r, t.*
from (select *
from v_all_subs a
where 1 = 1
and a.payuser like '139200000%'
order by a.productindex) t
where rownum <=10