程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> Oracle數據庫 >> 關於Oracle數據庫 >> Oracle提高sql執行效率的心得建議

Oracle提高sql執行效率的心得建議

編輯:關於Oracle數據庫

    sql執行效率一直都是為人所關注,那到底應該怎樣提高呢?有什麼比較好的方法,下面與大家分享下比較不錯的建議,感興趣的朋友可以參考下,希望對大家有所幫助

    復制代碼 代碼如下:
    -->FROM子句中包含多個表的情況下,選擇記錄條數最少的表作為基礎表

    -->解析WHERE子句是自下而上的 過濾條件要有順序

    -->ORACLE會將'*'轉換成列名

    -->DELETE會在rollback segment中存放可恢復信息,可以試試TRUNCATE

    -->COMMIT會釋放:1.rollback segment
    2.被程序語句獲得的鎖
    3.redo log buffer

    -->把Alias前綴於每個Column上可以減少解析的時間

    -->ORACLE解析sql語句時會把小寫的字母轉換成大寫的再執行

    -->在索引列上使用NOT會停止使用索引轉而執行全表掃描

    -->在索引列上進行運算會停止使用索引轉而執行全表掃描

    -->使用'>=',而不是'>'

    -->where子句中'!='、'||'、'+'等符號會破壞索引

    -->IN的效率很低,IN子句將執行一個內部的排序和合並

    -->EXIST查詢更為迅速

    -->對於兩個索引列,UNION比OR效率更高

    -->IS NULL會破壞索引

    -->DISTINCT,UNION,MINUS,INTERSECT,ORDER BY等都帶有SORT功能,會耗費資源

    -->多個索引列時盡量使用第一個索引列

    -->盡量用 UNION ALL代替UNION

    -->不要用TO_NUMBER()之類的函數改變索引列的類型。

    -->對於字符類型的索引列盡量寫成:col = '123' 而不是 col = 123,後者會被解析為TO_NUMBER(EMP_TYPE)=123

    -->適當的地方使用適當的關鍵字:HAVING會在檢索出所有記錄之後對結果集進行過濾 能使用WHERE解決時不要用HAVING

    -->索引也需要維護,INSERT,DELETE,UPDATE會因索引而做出更多次I/O

    -->重構索引是必要的:ALTER INDEX <INDEXNAME> REBUILD <TABLESPACENAME> [ONLINE]

    詳細出處參考:http://www..net/article/40415.htm

    1. 上一頁:
    2. 下一頁:
    Copyright © 程式師世界 All Rights Reserved