sql執行效率一直都是為人所關注那到底應該怎樣提高呢?有什麼比較好的方法下面與大家分享下比較不錯的建議感興趣的朋友可以參考下希望對大家有所幫助
復制代碼 代碼如下:
>FROM子句中包含多個表的情況下選擇記錄條數最少的表作為基礎表
>解析WHERE子句是自下而上的 過濾條件要有順序
>ORACLE會將*轉換成列名
>DELETE會在rollback segment中存放可恢復信息可以試試TRUNCATE
>COMMIT會釋放:rollback segment
被程序語句獲得的鎖
redo log buffer
>把Alias前綴於每個Column上可以減少解析的時間
>ORACLE解析sql語句時會把小寫的字母轉換成大寫的再執行
>在索引列上使用NOT會停止使用索引轉而執行全表掃描
>在索引列上進行運算會停止使用索引轉而執行全表掃描
>使用>=而不是>
>where子句中!=||+等符號會破壞索引
>IN的效率很低IN子句將執行一個內部的排序和合並
>EXIST查詢更為迅速
>對於兩個索引列UNION比OR效率更高
>IS NULL會破壞索引
>DISTINCTUNIONMINUSINTERSECTORDER BY等都帶有SORT功能會耗費資源
>多個索引列時盡量使用第一個索引列
>盡量用 UNION ALL代替UNION
>不要用TO_NUMBER()之類的函數改變索引列的類型
>對於字符類型的索引列盡量寫成col = 而不是 col = 後者會被解析為TO_NUMBER(EMP_TYPE)=
>適當的地方使用適當的關鍵字HAVING會在檢索出所有記錄之後對結果集進行過濾 能使用WHERE解決時不要用HAVING
>索引也需要維護INSERTDELETEUPDATE會因索引而做出更多次I/O
>重構索引是必要的ALTER INDEX <INDEXNAME> REBUILD <TABLESPACENAME> [ONLINE]
詳細出處參考
From:http://tw.wingwit.com/Article/program/Oracle/201311/19048.html