Oracle提高sql執(zhí)行效率的心得建議
更新時(shí)間:2013年08月08日 16:53:43 作者:
sql執(zhí)行效率一直都是為人所關(guān)注,那到底應(yīng)該怎樣提高呢?有什么比較好的方法,下面與大家分享下比較不錯(cuò)的建議,感興趣的朋友可以參考下,希望對(duì)大家有所幫助
復(fù)制代碼 代碼如下:
-->FROM子句中包含多個(gè)表的情況下,選擇記錄條數(shù)最少的表作為基礎(chǔ)表
-->解析WHERE子句是自下而上的 過濾條件要有順序
-->ORACLE會(huì)將'*'轉(zhuǎn)換成列名
-->DELETE會(huì)在rollback segment中存放可恢復(fù)信息,可以試試TRUNCATE
-->COMMIT會(huì)釋放:1.rollback segment
2.被程序語句獲得的鎖
3.redo log buffer
-->把Alias前綴于每個(gè)Column上可以減少解析的時(shí)間
-->ORACLE解析sql語句時(shí)會(huì)把小寫的字母轉(zhuǎn)換成大寫的再執(zhí)行
-->在索引列上使用NOT會(huì)停止使用索引轉(zhuǎn)而執(zhí)行全表掃描
-->在索引列上進(jìn)行運(yùn)算會(huì)停止使用索引轉(zhuǎn)而執(zhí)行全表掃描
-->使用'>=',而不是'>'
-->where子句中'!='、'||'、'+'等符號(hào)會(huì)破壞索引
-->IN的效率很低,IN子句將執(zhí)行一個(gè)內(nèi)部的排序和合并
-->EXIST查詢更為迅速
-->對(duì)于兩個(gè)索引列,UNION比OR效率更高
-->IS NULL會(huì)破壞索引
-->DISTINCT,UNION,MINUS,INTERSECT,ORDER BY等都帶有SORT功能,會(huì)耗費(fèi)資源
-->多個(gè)索引列時(shí)盡量使用第一個(gè)索引列
-->盡量用 UNION ALL代替UNION
-->不要用TO_NUMBER()之類的函數(shù)改變索引列的類型。
-->對(duì)于字符類型的索引列盡量寫成:col = '123' 而不是 col = 123,后者會(huì)被解析為TO_NUMBER(EMP_TYPE)=123
-->適當(dāng)?shù)牡胤绞褂眠m當(dāng)?shù)年P(guān)鍵字:HAVING會(huì)在檢索出所有記錄之后對(duì)結(jié)果集進(jìn)行過濾 能使用WHERE解決時(shí)不要用HAVING
-->索引也需要維護(hù),INSERT,DELETE,UPDATE會(huì)因索引而做出更多次I/O
-->重構(gòu)索引是必要的:ALTER INDEX <INDEXNAME> REBUILD <TABLESPACENAME> [ONLINE]
相關(guān)文章
oracle查看執(zhí)行最慢與查詢次數(shù)最多的sql語句
這篇文章主要給大家介紹了oracle查看執(zhí)行最慢與查詢次數(shù)最多的sql語句,文中給出完整的示例代碼,相信對(duì)大家的學(xué)習(xí)或者工作具有一定的參考價(jià)值,有需要的朋友們下面來一起看看吧。2017-01-01
win10系統(tǒng)安裝oracle11g時(shí)遇到INS-13001環(huán)境不滿足最低要求解決辦法
這篇文章主要介紹了win10系統(tǒng)安裝oracle11g時(shí)遇到INS-13001環(huán)境不滿足最低要求解決辦法,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2019-09-09
大表delete刪數(shù)據(jù)導(dǎo)致數(shù)據(jù)庫異常解決
這篇文章主要為大家介紹了大表delete刪數(shù)據(jù)導(dǎo)致數(shù)據(jù)庫異常解決,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-07-07
Oracle遞歸查詢start with connect by prior的用法
這篇文章主要給大家介紹了關(guān)于Oracle遞歸查詢start with connect by prior、的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧2019-02-02
一文教會(huì)你配置使用Navicat或PLSQL可視化工具遠(yuǎn)程連接Oracle
Navicat是一款數(shù)據(jù)庫管理工具,是一個(gè)可多重連線資料庫的管理工具,下面這篇文章主要給大家介紹了關(guān)于配置使用Navicat或PLSQL可視化工具遠(yuǎn)程連接Oracle的相關(guān)資料,需要的朋友可以參考下2023-04-04

