首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > oracle >

Oracle中提高大数据量查询速度有关问题

2012-03-04 
Oracle中提高大数据量查询速度问题selectvw013.ver,vw013.ACT,vw016.RN,vw016.RA,vw013.LSFromvw016,vw013

Oracle中提高大数据量查询速度问题
select   vw013.ver,vw013.ACT,vw016.RN,vw016.RA,vw013.LS  

From   vw016,vw013

  WHERE   vw013.ver   =   0     and   vw016.PROJ   =   vw013.PROJ     and  
 
  vw016.VER   =   vw013.VER     and   vw016.ACT   =   vw013.ACT     and   vw016.proj   not   like   'FCST_% '

其中vw013表中有1千万条以上数据,vw016表中有500万以上的数据,有什么方法可以加快检索速度?两个表的proj、ver、act上都有索引

[解决办法]
select vw013.ver,vw013.ACT,vw016.RN,vw016.RA,vw013.LS
From vw016,vw013
WHERE vw013.ver = 0 and vw016.PROJ = vw013.PROJ and
vw016.VER = vw013.VER and vw016.ACT = vw013.ACT and substr(vw016.proj,1,5) <> 'FCST_ '

去掉like 試試,不行再給vw016加上函數索引substr(vw016.proj,1,5)
[解决办法]
提高查询效率方法很多
可以先
dbms_stats.gather_table_stats 下相应的表,对相应表统计分析
来提高关联速度和数据存取
尽量不要使用 not like 在查询时CBO会停用索引的
改成 like 'XXX ' or like 'XXX '
假如值多的话,只能 按照LS的建立函数索引
不建议使用 <> 一样会停用索引的 改成如下
substr(vw016.proj,1,5) < 'FCST_ ' and substr(vw016.proj,1,5)> 'FCST_ '
[解决办法]
如果没有使用分区,首先要使用分区。分区注意:根据数据的情况决定在哪个字段上做范围分区,在哪些字段上做哈希散列,最后再考虑索引。
[解决办法]

不要使用NOT
[解决办法]
最好是建分区表,并建立相应的函数索引
[解决办法]
不要使用not

热点排行