所有的数据已经在一张表里,并且此表一分区。SQL如下:
select pv.url, count(pv.url) num
from table partition(table_20101213) pv
where TRUNC(mydate, 'fmhh24')
between to_date('2010-12-13 00:00:00','SYYYY-MM-DD HH24:MI:SS','NLS_CALENDAR=GREGORIAN')
and to_date('2010-12-13 23:59:59','SYYYY-MM-DD HH24:MI:SS','NLS_CALENDAR=GREGORIAN')
and pv.url like '/aaaaa%bbbb%'
group by pv.url
order by num;目前在PL/SQL里查询大约需要17分钟。这个时间太长了,求改善方法。。
select pv.url, count(pv.url) num
from table partition(table_20101213) pv
where TRUNC(mydate, 'fmhh24')
between to_date('2010-12-13 00:00:00','SYYYY-MM-DD HH24:MI:SS','NLS_CALENDAR=GREGORIAN')
and to_date('2010-12-13 23:59:59','SYYYY-MM-DD HH24:MI:SS','NLS_CALENDAR=GREGORIAN')
and pv.url like '/aaaaa%bbbb%'
group by pv.url
order by num;目前在PL/SQL里查询大约需要17分钟。这个时间太长了,求改善方法。。
解决方案 »
- oracle中pl/sql编程 编写1+2+3+。。。。+100的和??
- oracle多字段检索问题
- sqlldr 导入数据的问题。
- 求一个 MS SQL SERVER 语句改写成PL SQL的问题
- 高分请问:在windows2003 server下安装oracle8i server总是不成功,报TNS出错!请问怎么解决?
- 请教高手,帮我看看这个,为什么编译通过不了
- 进入svrmgrl用startup不能启动我后来创建的database,请问该怎么做?
- Oracle9i Report Server 如何安装和配置?
- 过ocp-oracle8i 的dba 一共需要多少钱?请考过的人给预见意!
- 我想在我本机访问另一台远程机的ORACLE,另一台机子不在内网,只能通过互联网访问,怎么做?开放端口?
- .net执行存储过程异常
- 请教Oracle存储过程日期的比较,传入的日期包含时分秒,可是比较的时候Oracle自动把时分秒去掉了,只留下了年月日,请问为什么?
用了函数就不能用索引了,不能直接mydate做过滤?
TRUNC(mydate, 'fmhh24') 这个建个基于函数的索引
create index xx_trunc_idx on xx(TRUNC(mydate, 'fmhh24')); 好像是这么写.
后面的 like改成 instr(pv.url, '/aaaaa%bbbb%' ) > 0; 我也是个土包子,你参考吧。
在索引上做了函数处理的话,那这个索引就自动失效了呀。。
2.过程处理,定制执行。将你想要的数据迁移到另外一张表里。迁移完后可随时较轻松查询。
去除 order by能有多大的性能提升呢?
order by 是因为我需要前面几条数据。 如果不做order by的话,那我就得在java代码里获取这些数据了。
from table partition(table_20101213) pv
where TRUNC(mydate, 'fmhh24')
between to_date('2010-12-13 00:00:00','SYYYY-MM-DD HH24:MI:SS','NLS_CALENDAR=GREGORIAN')
and to_date('2010-12-13 23:59:59','SYYYY-MM-DD HH24:MI:SS','NLS_CALENDAR=GREGORIAN')
and pv.url like '/aaaaa%bbbb%'
group by pv.url
order by num;试试
这个是不是很耗cpu的?会不会直接把服务down掉,这个表只在production上有,如果down掉的话,那我就搞大了。
很好,不知道PL/SQL developer 有没有这功能?先找找看。