Oracle提高sql執(zhí)行效率的心得建議
更新時間:2013年08月08日 16:53:43 作者:
sql執(zhí)行效率一直都是為人所關(guān)注,那到底應(yīng)該怎樣提高呢?有什么比較好的方法,下面與大家分享下比較不錯的建議,感興趣的朋友可以參考下,希望對大家有所幫助
復(fù)制代碼 代碼如下:
-->FROM子句中包含多個表的情況下,選擇記錄條數(shù)最少的表作為基礎(chǔ)表
-->解析WHERE子句是自下而上的 過濾條件要有順序
-->ORACLE會將'*'轉(zhuǎn)換成列名
-->DELETE會在rollback segment中存放可恢復(fù)信息,可以試試TRUNCATE
-->COMMIT會釋放:1.rollback segment
2.被程序語句獲得的鎖
3.redo log buffer
-->把Alias前綴于每個Column上可以減少解析的時間
-->ORACLE解析sql語句時會把小寫的字母轉(zhuǎn)換成大寫的再執(zhí)行
-->在索引列上使用NOT會停止使用索引轉(zhuǎn)而執(zhí)行全表掃描
-->在索引列上進(jìn)行運(yùn)算會停止使用索引轉(zhuǎn)而執(zhí)行全表掃描
-->使用'>=',而不是'>'
-->where子句中'!='、'||'、'+'等符號會破壞索引
-->IN的效率很低,IN子句將執(zhí)行一個內(nèi)部的排序和合并
-->EXIST查詢更為迅速
-->對于兩個索引列,UNION比OR效率更高
-->IS NULL會破壞索引
-->DISTINCT,UNION,MINUS,INTERSECT,ORDER BY等都帶有SORT功能,會耗費(fèi)資源
-->多個索引列時盡量使用第一個索引列
-->盡量用 UNION ALL代替UNION
-->不要用TO_NUMBER()之類的函數(shù)改變索引列的類型。
-->對于字符類型的索引列盡量寫成:col = '123' 而不是 col = 123,后者會被解析為TO_NUMBER(EMP_TYPE)=123
-->適當(dāng)?shù)牡胤绞褂眠m當(dāng)?shù)年P(guān)鍵字:HAVING會在檢索出所有記錄之后對結(jié)果集進(jìn)行過濾 能使用WHERE解決時不要用HAVING
-->索引也需要維護(hù),INSERT,DELETE,UPDATE會因索引而做出更多次I/O
-->重構(gòu)索引是必要的:ALTER INDEX <INDEXNAME> REBUILD <TABLESPACENAME> [ONLINE]
相關(guān)文章
oracle數(shù)據(jù)庫中如何處理clob字段方法介紹
在知識庫的建立的時候,用普通VARCHAR2存放文章是顯然不夠的,本文將詳細(xì)將介紹oracle數(shù)據(jù)庫中如何處理clob字段方法,需要的朋友可以參考下2012-11-11Oracle中TIMESTAMP的幾種類型介紹與實(shí)例
我們都知道date和timestamp都是對日期和時間的表示,只是兩種類型的精確度不同,前者精確到秒,后者精確到小數(shù)秒(fractional_seconds_precision),可以是 0 to 9,缺省是6。這篇文章主要介紹了Oralce中TIMESTAMP的幾種類型。有需要的朋友們可以參考借鑒。2016-12-12Oracle數(shù)據(jù)庫如何將表的某一列所有值用逗號隔開去重后合并成一行
在做系統(tǒng)時經(jīng)常會遇到在?個字段中,?逗號或其他符號分隔存儲多個信息,這篇文章主要給大家介紹了關(guān)于Oracle數(shù)據(jù)庫如何將表的某一列所有值用逗號隔開去重后合并成一行的相關(guān)資料,需要的朋友可以參考下2023-12-12解決Windows 7下安裝Oracle 11g相關(guān)問題的方法
本文將為大家介紹Windows 7下安裝Oracle 11g方面的有關(guān)問題解決方案。希望通過本文,能讓大家對11g這款產(chǎn)品有更多的認(rèn)識,需要的朋友可以參考下2015-08-08