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

來源:互聯網
上載者:User

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.jb51.net/article/40415.htm

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.