天天看點

sql相關性能指南

 1.        不同表的同一字段要有相同的類型,比如t_audit_report表的claim_id為varchar2類型,而t_claim表的該字段為number型,這樣會導緻2個表關聯使用claim_id關聯的時候,使用不了索引。

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  索引列的類型自動轉換

<b>其他</b>

1.        在寫代碼時,注重性能的同時不要忽略可讀性.

2.        是否考慮過修改需求來提升性能?

3.        是否考慮過修改程式的設計來提高性能?

     本文轉自 珏石頭 51CTO部落格,原文連結:http://blog.51cto.com/gavinshaw/936068,如需轉載請自行聯系原作者