sql優(yōu)化2

  • 一條查詢sql語句的執(zhí)行流程:
  1. FROM <表名>
    選取表跌榔,將<left_table>及<right_table>表數(shù)據(jù)通過笛卡爾積生成虛表VT1(此時(shí)VT1包括表中所有的字段?)绪囱,
  2. ON <篩選條件>
    對笛卡爾積的虛表VT1根據(jù)條件進(jìn)行篩選VT2
  3. JOIN <join, left join, right join...> <join表>
    指定join,保留表中未匹配的行就會作為外部行添加到虛擬表VT2中像屋,產(chǎn)生虛表VT3。例如left join會將左表的剩余數(shù)據(jù)添加到虛表VT2中边篮,生成虛表VT3
  4. WHERE <where條件>
    對上述虛表VT3進(jìn)行篩選, 將符合<where-condition>的記錄才會被插入到虛表VT4
    此時(shí)還沒有進(jìn)行g(shù)roup by己莺,因此WHERE中出現(xiàn)對統(tǒng)計(jì)的過濾是不對的(不可以使用聚合函數(shù)),若需要?jiǎng)t在having中實(shí)現(xiàn)戈轿。
    請思考一下凌受,對于同樣的篩選條件:在on和where 處進(jìn)行篩選有結(jié)果會有不同?
  5. GROUP BY <分組條件>
    分組, 根據(jù)分組條件思杯,對VT4進(jìn)行分組操作胜蛉,生成虛表VT5(若是有g(shù)roup by,那么后面的所有步驟都只能得到的VT4的列及聚合函數(shù)(count色乾、sum誊册、avg等),即VT5虛表只會生成這些)
    注意:所有select的字段暖璧,除聚合函數(shù)中的字段外案怯,都必須在group by中出現(xiàn)
  6. HAVING <分組篩選>
    對分組后的結(jié)果進(jìn)行篩選,即對虛表VT5進(jìn)行篩選生成VT6
  7. SELECT<返回?cái)?shù)據(jù)列表>
    選擇指定的列澎办,生成虛擬表VT7(再次提醒:若有g(shù)roup by子句中嘲碱,則此處除了group by子句中的列+聚合函數(shù)除外,不能再出現(xiàn)其它的列浮驳。請思考下悍汛,為什么不建議Select *from?)
  8. DISTINCT
    數(shù)據(jù)除重,生成VT8
  9. ORDER BY<排序條件>
    將虛表VT8按照<order_by_list>進(jìn)行排序操作,產(chǎn)生虛擬表VT9,請注意:這是唯一的一個(gè)可以使用select列表中別名的步驟
  10. LIMIT <行數(shù)限制>
    取出指定行的記錄至会,產(chǎn)生虛擬表VT10, 并將結(jié)果返回
  • 擴(kuò)展:帶有子查詢的執(zhí)行順序(堅(jiān)持小表驅(qū)動大表的原則)
    1. 不相關(guān)子查詢:子查詢的查詢條件不依賴于父查詢(由里向外 逐層處理离咐。即每個(gè)子查詢在上一級查詢處理之前求解,子查詢的結(jié)果用于建立其父查詢的查找條件)
    select * from emp where sal = (select max(sal) from emp);
    先執(zhí)行內(nèi)層查詢奉件,作為where 條件再執(zhí)行外層查詢
    2. 相關(guān)子查詢:子查詢的查詢條件依賴于父查詢(先取外層查詢中表的第一個(gè)元組宵蛀,根據(jù)它與內(nèi)層查詢相關(guān)的屬性值處理內(nèi)層查詢,若WHERE子句返回值為真县貌,則取此元組放入結(jié)果表术陶,
    然后再取外層表的下一個(gè)元組,重復(fù)這一過程煤痕,直至外層表全部檢查完為止)
    select * from dept d where exists(select * from emp e where e.deptno = d.deptno);
    先執(zhí)行外層查詢梧宫,再執(zhí)行內(nèi)層查詢
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末接谨,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子塘匣,更是在濱河造成了極大的恐慌脓豪,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,265評論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件忌卤,死亡現(xiàn)場離奇詭異扫夜,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)驰徊,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,078評論 2 385
  • 文/潘曉璐 我一進(jìn)店門笤闯,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人棍厂,你說我怎么就攤上這事颗味。” “怎么了勋桶?”我有些...
    開封第一講書人閱讀 156,852評論 0 347
  • 文/不壞的土叔 我叫張陵脱衙,是天一觀的道長。 經(jīng)常有香客問我例驹,道長捐韩,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,408評論 1 283
  • 正文 為了忘掉前任鹃锈,我火速辦了婚禮荤胁,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘屎债。我一直安慰自己仅政,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,445評論 5 384
  • 文/花漫 我一把揭開白布盆驹。 她就那樣靜靜地躺著圆丹,像睡著了一般。 火紅的嫁衣襯著肌膚如雪躯喇。 梳的紋絲不亂的頭發(fā)上辫封,一...
    開封第一講書人閱讀 49,772評論 1 290
  • 那天,我揣著相機(jī)與錄音廉丽,去河邊找鬼倦微。 笑死,一個(gè)胖子當(dāng)著我的面吹牛正压,可吹牛的內(nèi)容都是我干的欣福。 我是一名探鬼主播,決...
    沈念sama閱讀 38,921評論 3 406
  • 文/蒼蘭香墨 我猛地睜開眼焦履,長吁一口氣:“原來是場噩夢啊……” “哼拓劝!你這毒婦竟也來了雏逾?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,688評論 0 266
  • 序言:老撾萬榮一對情侶失蹤郑临,失蹤者是張志新(化名)和其女友劉穎校套,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體牧抵,經(jīng)...
    沈念sama閱讀 44,130評論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,467評論 2 325
  • 正文 我和宋清朗相戀三年侨把,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了犀变。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,617評論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡秋柄,死狀恐怖获枝,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情骇笔,我是刑警寧澤省店,帶...
    沈念sama閱讀 34,276評論 4 329
  • 正文 年R本政府宣布,位于F島的核電站笨触,受9級特大地震影響懦傍,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜芦劣,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,882評論 3 312
  • 文/蒙蒙 一粗俱、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧虚吟,春花似錦寸认、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,740評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至邦鲫,卻和暖如春灸叼,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背掂碱。 一陣腳步聲響...
    開封第一講書人閱讀 31,967評論 1 265
  • 我被黑心中介騙來泰國打工怜姿, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人疼燥。 一個(gè)月前我還...
    沈念sama閱讀 46,315評論 2 360
  • 正文 我出身青樓沧卢,卻偏偏與公主長得像,于是被迫代替她去往敵國和親醉者。 傳聞我的和親對象是個(gè)殘疾皇子但狭,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,486評論 2 348

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