1.选用合适的ORACLE优化器:
a.RULE(基于规则)
b.COST(基于成本)
c.CHOOSE(基于选择)(缺省)(尽量避免使用)
2.两种访问表中记录的方式
a.全表扫描
b.通过rowid访问表
3.共享sql语句
避免重复解析相同的sql语句
4.选择最有效的表名排列顺序(只在基于规则的优化器中有效)
from子句的表名顺序在解析时从右至左,最后一个表名(基础表)最先解析,应选择纪录最少的表作为基础表
5.where子句的链接顺序(自下而上解析)
表关联查询的条件应该放在最前面
6.select子句中尽量避免使用*
7.减少访问数据库的次数
比如查询数据库表中某个字段分别等于a和b的纪录,用表内查询效率最高
8.使用decode函数来减少处理时间
decode()可以避免重复扫描相同记录或重复连接相同的表
9.删除重复记录时使用rowid
10.用truncate代替delete
11.用where子句代替having子句
12.减少对表的查询
13.使用表的别名
14.用(not)exists代替(not)in