进行了显式或隐式的运算的字段不能进行索引,如:
ss_df+20>50,优化处理:ss_df>30
‘x’||hbs_bh>’x5400021452’,优化处理:hbs_bh>’5400021542’
sk_rq+5=sysdate,优化处理:sk_rq=sysdate-5
hbs_bh=5401002554,优化处理:hbs_bh=’ 5401002554’,注:此条件对hbs_bh 进行隐式的to_number转换,因为hbs_bh字段是字符型。
条件内包括了多个本表的字段运算时不能进行索引,如:
ys_df>cx_df,无法进行优化
qc_bh||kh_bh=’5400250000’,优化处理:qc_bh=’5400’ and kh_bh=’250000’
应用oracle的hint(提示)处理
提示处理是在oracle产生的sql分析执行路径不满意的情况下要用到的。它可以对sql进行以下方面的提示
目标方面的提示:
cost(按成本优化)
rule(按规则优化)
choose(缺省)(oracle自动选择成本或规则进行优化)
all_rows(所有的行尽快返回)
first_rows(第一行数据尽快返回)
执行方法的提示:
use_nl(使用nested loops方式联合)
use_merge(使用merge join方式联合)
use_hash(使用hash join方式联合)
索引提示:
index(table index)(使用提示的表索引进行查询)
其它高级提示(如并行处理等等)
oracle的提示功能是比较强的功能,也是比较复杂的应用,并且提示只是给oracle执行的一个建议,有时如果出于成本方面的考虑oracle也可能不会按提示进行。根据实践应用,一般不建议开发人员应用oracle提示,因为各个数据库及服务器性能情况不一样,很可能一个地方性能提升了,但另一个地方却下降了,oracle在sql执行分析方面已经比较成熟,如果分析执行的路径不对首先应在数据库结构(主要是索引)、服务器当前性能(共享内存、磁盘文件碎片)、数据库对象(表、索引)统计信息是否正确这几方面分析。
(T127)