1 from 后的表名 选择最有效率的表名顺序
记录条数 最少的放在后面 作为基础表;
如果有3个以上的表连接查询 选择交叉表作为基础表 ,交叉表 是指那个被其他表引用的比表;
2 where 子句的 连接顺序
将能够过滤掉最大数据量的条件 放在where子句的末尾;
3 用 列名 代替 * ;
4 使用 decode 函数减少 处理时间;
5 整合 简单 无关联的 数据库访问 即使他们之间没有联系;
6 删除 重复记录:
delete from emp e where e.rowid >
(select min(x.rowid) from emp x where x.empno = e.empno)
7 减少对数据库的查询次数;
8 减少对表的查询;
9 尽量 使用 commint;
10 java 中 尽量少用 “+” 连接符;
11 使用 oracle 的函数;
12 使用表的别名 ,并将别名加列名前
13 使用索引,加快查询速度(数据访问量达到30%时 ,没有明显的效率提高), 在索引列上,不要使用计算操作; 避免使用 not,is null,is not null,!= ;
14 总是使用索引的第一个列;避免改变索引列的类型;
15 用 >= 代替 >
16 用 in 代替 or
17 用union 代替 or
18 用 exists 代替 in ;not exists 代替 not in ;
19 用 exists 代替 distinct;
20 用union-all 代替 union
21 用truncate 代替 delete ;
22 用 where 代替 having 子句;
23 用 where 代替 order by;
24 sql语句 用大写;
25 在where子句中 "!=" ,"||" 和 "+" 都不使用索引;相同的索引列不能互相比较,将会起动全表扫描;