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. 是否考慮過修改程序的設計來提升性能?