1. 不一样表的同一字段要有相同的类型,好比t_audit_report表的claim_id为varchar2类型,而t_claim表的该字段为number型,这样会致使2个表关联使用claim_id关联的时候,使用不了索引。ide
2.
尽可能使用UNION ALL,而不是UNION
3.
避免写过于复杂的SQL,不必定要一个SQL解决问题,能够考虑使用多个小的SQL语句来实现一样的功能。
4.
查询尽可能用肯定的列名,少用*
5.
将in子句替换成exists子句
6.
使用NOT EXISTS替代NOT IN
7.
外键须要加索引,不然删除父表的记录时会致使子表上的全表锁。
8.
删除没必要要的索引
9.
添加冗余字段,减小大表的关联
10.
避免在索引列上使用函数,若是没法避免,能够添加函数索引,在写SQL语句时,须要使用一致的函数。好比系统中对t_user表的字段account有的地方使用lower函数,有的地方却使用upper函数。
11.
若是明细查询语句很复杂,统计语句不要重用明细查询语句。由于统计语句不须要查询详细信息,能够去掉不少表的关联。
12.
以下状况下,Oracle不会使用索引,咱们应该避免
l
在索引列上使用前置通配符
l
在索引列上使用NOT
l
在索引列上使用IS NULL和IS NOT NULL
l
索引列的类型自动转换
其余
1.
在写代码时,注重性能的同时不要忽略可读性.
2.
是否考虑过修改需求来提高性能?
3. 是否考虑过修改程序的设计来提升性能?