(1)避免复杂的多表关联
select ...
from user_files uf , df_money_files dm,cw_charge_record cc
where uf.user_no = dm.user_no
and dm.user_no = cc.user_no
and ...
and not exists(select ...大表)
随着数据量的增加性能的风险很大。
(2)避免使用‘ * ’
当你想在SELECT子句中列出所有的COLUMN时,使用动态SQL列引用’*’是一个方便的方法。不幸的是,这是一个非常低效的方法。实际上,Oracle在解析的过程中,会将‘*’依次转换成所有的列名,这个工作是通过查询数据字典完成的,这意味着将耗费更多的时间;
只提取你所要使用的列.
(3)避免使用耗费资源的操作
带有DISTINCT , UNION , MINUS,INTERSECT,ORDER BY的SQL语句会启动SQL引擎执行耗费资源的排序(SORT)功能。DISTINCT需要一次排序操作,而其他的至少需要执行两次排序。
通常,带有UNION,MINUS,INTERSECT的SQL语句都可以用其他方式重写。
(1)自动选择索引
如果表