SQL執(zhí)行順序

查詢語句中select from where group by having order by的執(zhí)行順序

1.查詢中用到的關(guān)鍵詞主要包含六個,并且他們的順序依次為?

select--from--where--group by--having--order by?

其中select和from是必須的烦粒,其他關(guān)鍵詞是可選的棕孙,這六個關(guān)鍵詞的執(zhí)行順序?

與sql語句的書寫順序并不是一樣的,而是按照下面的順序來執(zhí)行?

from--where--group by--having--select--order by,?

from:需要從哪個數(shù)據(jù)表檢索數(shù)據(jù)?

where:過濾表中數(shù)據(jù)的條件?

group by:如何將上面過濾出的數(shù)據(jù)分組?

having:對上面已經(jīng)分組的數(shù)據(jù)進行過濾的條件??

select:查看結(jié)果集中的哪個列播掷,或列的計算結(jié)果?

order by :按照什么樣的順序來查看返回的數(shù)據(jù)

2.from后面的表關(guān)聯(lián),是自右向左解析的?

而where條件的解析順序是自下而上的。?

也就是說拒啰,在寫SQL文的時候,盡量把數(shù)據(jù)量大的表放在最右邊來進行關(guān)聯(lián)完慧,?

而把能篩選出大量數(shù)據(jù)的條件放在where語句的最下面谋旦。

SQL Select語句完整的執(zhí)行順序【從DBMS使用者角度】:

1、from子句組裝來自不同數(shù)據(jù)源的數(shù)據(jù)屈尼;

2册着、where子句基于指定的條件對記錄行進行篩選;

3脾歧、group by子句將數(shù)據(jù)劃分為多個分組甲捏;

4、使用聚集函數(shù)進行計算鞭执;

5司顿、使用having子句篩選分組;

6兄纺、計算所有的表達式大溜;

7、使用order by對結(jié)果集進行排序估脆。

from 子句--執(zhí)行順序為從后往前钦奋、從右到左

表名(最后面的那個表名為驅(qū)動表,執(zhí)行順序為從后往前, 所以數(shù)據(jù)量較少的表盡量放后)

oracle 的解析器按照從右到左的順序處理,F(xiàn)ROM 子句中的表名锨苏,F(xiàn)ROM 子句中寫在最后的表(基礎(chǔ)表 driving

table)將被最先處理疙教,即最后的表為驅(qū)動表,在FROM 子句中包含多個表的情況下,你必須選擇記錄條數(shù)最少的表作為基礎(chǔ)表伞租。如果有3

個以上的表連接查詢, 那就需要選擇交叉表(intersection table)作為基礎(chǔ)表, 交叉表是指被其他表所引用的表

多表連接時贞谓,使用表的別名并把別名前綴于每個Column上】可以減少解析的時間并減少那些由Column 歧義引起的語法錯誤.

where子句--執(zhí)行順序為自下而上裸弦、從右到左

ORACLE 采用自下而上從右到左的順序解析Where 子句,根據(jù)這個原理,表之間的連接必須寫在其他Where 條件之前,?可以過濾掉最大數(shù)量記錄的條件必須寫在Where 子句的末尾。

group by--執(zhí)行順序從左往右分組

提高GROUP BY 語句的效率, 可以通過將不需要的記錄在GROUP BY 之前過濾掉作喘。即在GROUP BY前使用WHERE來過慮理疙,而盡量避免GROUP BY后再HAVING過濾。

having 子句----很耗資源泞坦,盡量少用

避免使用HAVING 子句,?HAVING 只會在檢索出所有記錄之后才對結(jié)果集進行過濾. 這個處理需要排序,總計等操作.

如果能通過Where 子句在GROUP BY前限制記錄的數(shù)目,那就能減少這方面的開銷.

(非oracle 中)on窖贤、where、having 這三個都可以加條件的子句中贰锁,on 是最先執(zhí)行赃梧,where 次之,having 最后豌熄,因為on 是先把不符合條件的記錄過濾后才進行統(tǒng)計授嘀,它就可以減少中間運算要處理的數(shù)據(jù),按理說應(yīng)該速度是最快的锣险,

where 也應(yīng)該比having 快點的蹄皱,因為它過濾數(shù)據(jù)后才進行sum,在兩個表聯(lián)接時才用on 的芯肤,所以在一個表的時候巷折,就剩下where 跟having比較了。

在這單表查詢統(tǒng)計的情況下崖咨,如果要過濾的條件沒有涉及到要計算字段盔几,那它們的結(jié)果是一樣的,只是where 可以使用rushmore 技術(shù)掩幢,而having 就不能,在速度上后者要慢上鞠。

如果要涉及到計算的字段际邻,就表示在沒計算之前,這個字段的值是不確定的芍阎,where 的作用時間是在計算之前就完成的世曾,而having 就是在計算后才起作用的,所以在這種情況下,兩者的結(jié)果會不同轮听。

在多表聯(lián)接查詢時骗露,on 比where 更早起作用。系統(tǒng)首先根據(jù)各個表之間的聯(lián)接條件血巍,把多個表合成一個臨時表后萧锉,再由where 進行過濾,然后再計算述寡,計算完后再由having 進行過濾柿隙。

由此可見,要想過濾條件起到正確的作用鲫凶,首先要明白這個條件應(yīng)該在什么時候起作用禀崖,然后再決定放在那里。

select子句--少用*號螟炫,盡量取字段名稱波附。

ORACLE 在解析的過程中, 會將依次轉(zhuǎn)換成所有的列名, 這個工作是通過查詢數(shù)據(jù)字典完成的, 使用列名意味著將減少消耗時間。

sql 語句用大寫的昼钻;因為 oracle 總是先解析 sql 語句掸屡,把小寫的字母轉(zhuǎn)換成大寫的再執(zhí)行

order by子句--執(zhí)行順序為從左到右排序,很耗資源

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市换吧,隨后出現(xiàn)的幾起案子折晦,更是在濱河造成了極大的恐慌,老刑警劉巖沾瓦,帶你破解...
    沈念sama閱讀 212,718評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件满着,死亡現(xiàn)場離奇詭異,居然都是意外死亡贯莺,警方通過查閱死者的電腦和手機风喇,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,683評論 3 385
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來缕探,“玉大人魂莫,你說我怎么就攤上這事〉模” “怎么了耙考?”我有些...
    開封第一講書人閱讀 158,207評論 0 348
  • 文/不壞的土叔 我叫張陵,是天一觀的道長潭兽。 經(jīng)常有香客問我倦始,道長,這世上最難降的妖魔是什么山卦? 我笑而不...
    開封第一講書人閱讀 56,755評論 1 284
  • 正文 為了忘掉前任鞋邑,我火速辦了婚禮,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘枚碗。我一直安慰自己逾一,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 65,862評論 6 386
  • 文/花漫 我一把揭開白布肮雨。 她就那樣靜靜地躺著遵堵,像睡著了一般。 火紅的嫁衣襯著肌膚如雪酷含。 梳的紋絲不亂的頭發(fā)上鄙早,一...
    開封第一講書人閱讀 50,050評論 1 291
  • 那天,我揣著相機與錄音椅亚,去河邊找鬼限番。 笑死,一個胖子當(dāng)著我的面吹牛呀舔,可吹牛的內(nèi)容都是我干的弥虐。 我是一名探鬼主播,決...
    沈念sama閱讀 39,136評論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼媚赖,長吁一口氣:“原來是場噩夢啊……” “哼霜瘪!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起惧磺,我...
    開封第一講書人閱讀 37,882評論 0 268
  • 序言:老撾萬榮一對情侶失蹤颖对,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后磨隘,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體缤底,經(jīng)...
    沈念sama閱讀 44,330評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,651評論 2 327
  • 正文 我和宋清朗相戀三年番捂,在試婚紗的時候發(fā)現(xiàn)自己被綠了个唧。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,789評論 1 341
  • 序言:一個原本活蹦亂跳的男人離奇死亡设预,死狀恐怖徙歼,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情鳖枕,我是刑警寧澤魄梯,帶...
    沈念sama閱讀 34,477評論 4 333
  • 正文 年R本政府宣布,位于F島的核電站宾符,受9級特大地震影響画恰,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜吸奴,卻給世界環(huán)境...
    茶點故事閱讀 40,135評論 3 317
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧则奥,春花似錦考润、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,864評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至罚舱,卻和暖如春井辜,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背管闷。 一陣腳步聲響...
    開封第一講書人閱讀 32,099評論 1 267
  • 我被黑心中介騙來泰國打工粥脚, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人包个。 一個月前我還...
    沈念sama閱讀 46,598評論 2 362
  • 正文 我出身青樓刷允,卻偏偏與公主長得像,于是被迫代替她去往敵國和親碧囊。 傳聞我的和親對象是個殘疾皇子树灶,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 43,697評論 2 351

推薦閱讀更多精彩內(nèi)容