oracle select執(zhí)行順序的詳解
1、from子句組裝來(lái)自不同數(shù)據(jù)源的數(shù)據(jù);
2、where子句基于指定的條件對(duì)記錄行進(jìn)行篩選;
3、group by子句將數(shù)據(jù)劃分為多個(gè)分組;
4、使用聚集函數(shù)進(jìn)行計(jì)算;
5、使用having子句篩選分組;
6、計(jì)算所有的表達(dá)式;
7、使用order by對(duì)結(jié)果集進(jìn)行排序。
oracle 語(yǔ)句提高查詢效率的方法
1:.. where column in(select * from ... where ...);
2:... where exists (select 'X' from ...where ...);
第二種格式要遠(yuǎn)比第一種格式的效率高。在Oracle中可以幾乎將所有的IN操作符子查詢改寫為使用EXISTS的子查詢
使用EXISTS,Oracle系統(tǒng)會(huì)首先檢查主查詢,然后運(yùn)行子查詢直到它找到第一個(gè)匹配項(xiàng),這就節(jié)省了時(shí)間
Oracle系統(tǒng)在執(zhí)行IN子查詢時(shí),首先執(zhí)行子查詢,并將獲得的結(jié)果列表存放在在一個(gè)加了索引的臨時(shí)表中
選擇最有效率的表名順序(只在基于規(guī)則的優(yōu)化器中有效)
ORACLE的解析器按照從右到左的順序處理FROM子句中的表名,因此FROM子句中寫在最后的表(基礎(chǔ)表 driving table)將被最先處理。在FROM子句中包含多個(gè)表的情況下,你必須選擇記錄條數(shù)最少的表作為基礎(chǔ)表。當(dāng)ORACLE處理多個(gè)表時(shí),會(huì)運(yùn)用排序及合并的方式連接它們。首先,掃描第一個(gè)表(FROM子句中最后的那個(gè)表)并對(duì)記錄進(jìn)行派序,然后掃描第二個(gè)表(FROM子句中最后第二個(gè)表),最后將所有從第二個(gè)表中檢索出的記錄與第一個(gè)表中合適記錄進(jìn)行合并。
如果有3個(gè)以上的表連接查詢,那就需要選擇交叉表(intersection table)作為基礎(chǔ)表,交叉表是指那個(gè)被其他表所引用的表。
WHERE子句中的連接順序
ORACLE采用自下而上的順序解析WHERE子句,根據(jù)這個(gè)原理,表之間的連接必須寫在其他WHERE條件之前,那些可以過(guò)濾掉最大數(shù)量記錄的條件必須寫在WHERE子句的末尾。
相關(guān)文章
JDBC Oracle執(zhí)行executeUpdate卡死問(wèn)題的解決方案
今天小編就為大家分享一篇關(guān)于JDBC Oracle執(zhí)行executeUpdate卡死問(wèn)題的解決方案,小編覺(jué)得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來(lái)看看吧2018-12-12簡(jiǎn)析Oracle數(shù)據(jù)庫(kù)常見(jiàn)問(wèn)題及解決方案
這篇文章主要介紹了Oracle數(shù)據(jù)庫(kù)常見(jiàn)問(wèn)題及解決方案,總結(jié)了一些在Oracle數(shù)據(jù)庫(kù)使用過(guò)程中的常見(jiàn)問(wèn)題,并對(duì)其進(jìn)行了分析,給出了解決方案,需要的朋友可以參考下2015-08-08如何解決Oracle EBS R12 - 以Excel查看輸出格式為“文本”的請(qǐng)求時(shí)亂碼
這篇文章主要介紹了如何解決Oracle EBS R12 - 以Excel查看輸出格式為“文本”的請(qǐng)求時(shí)亂碼的相關(guān)資料,需要的朋友可以參考下2015-09-09Oracle 大小寫轉(zhuǎn)換函數(shù)實(shí)例詳解
這篇文章主要介紹了Oracle 大小寫轉(zhuǎn)換函數(shù)實(shí)例詳解的相關(guān)資料,需要的朋友可以參考下2017-06-06限制ip訪問(wèn)Oracle數(shù)據(jù)庫(kù)的方法步驟
這篇文章主要給大家介紹了關(guān)于限制ip訪問(wèn)Oracle數(shù)據(jù)庫(kù)的方法步驟,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者使用Oracle數(shù)據(jù)庫(kù)具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-08-08Oracle 11g服務(wù)器與客戶端卸載、安裝全過(guò)程
Oracle 11g服務(wù)器與客戶端的完全卸載方式與前些版本有了改變,下面是具體的操作過(guò)程,感興趣的朋友可以參考下哈2013-06-06如何解決ORA-01843與NLS_DATE_FORMAT問(wèn)題
本文將詳細(xì)介紹如何解決ORA-01843與NLS_DATE_FORMAT問(wèn)題,需要的朋友可以參考下2012-11-11DBA 在Linux下安裝Oracle Database11g數(shù)據(jù)庫(kù)圖文教程
正在學(xué)習(xí)Oracle DBA的知識(shí),所以安裝oracle 11個(gè)的數(shù)據(jù)庫(kù)用以做測(cè)試,如Clone, RMAN, Stream等2014-08-08Oracle SQLPlus導(dǎo)出數(shù)據(jù)到csv文件的方法
這篇文章主要介紹了Oracle SQLPlus導(dǎo)出數(shù)據(jù)到csv文件,需要的朋友可以參考下2020-05-05