ITPub博客

首页 > 数据库 > Oracle > sql优化

sql优化

原创 Oracle 作者:zgy13121 时间:2008-07-28 11:08:07 0 删除 编辑

sql优化

sql类似:

select col1,col2,...coln

from v_view1

where col1='...'

and col...

其中v_view1又是类似于

select v1col1,v1col2,...v1coln

from v_view2

where ...

而v_view2类似于

select v2col1,v2col2,...,v2coln

from table1

where v2col1!=...

and not ...

这样的sql我搞了半天,对不等于,对not这种都不好优化.

而sql的执行计划,竟然对一个数据量比较大的表进行了6次全表扫描.而这个表每天数据都在疯狂的增长.在plsql/devloper下执行一次要花时10秒左右.

是不是优化没法进行了?

从理论上来说,sql的优化就是尽量减少数据库的读与写.而这个sql有6次全表扫描,视图又不能用动态参数.

最后没法,用了一个最原始的办法.重写sql.

将视图还原sql嵌在里面,对每个条件都行审查,最后发现,在最外边的那个条件,可以利用索引.于是,将外面的条件移到最里面的视图的那个sql去.因为用了变量,所以不能用视图了.

这样就保证了,在里面取基表数据的时候就走索引扫描,由原来cost有4000多,下降到只有几十了.而执行一次也花费不到0.02秒.

最后再记住:sql的优化就是减少数据库读写写.

[@more@]

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/11419868/viewspace-1007956/ ,如需转载,请注明出处,否则将追究法律责任。

下一篇: plsql逐行累加
请登录后发表评论 登录
全部评论

注册时间:2008-09-27

  • 博文量
    58
  • 访问量
    245378