oracle join及where的執行次序

 一、 FROM:對FROM子句中的前兩個表履行笛卡爾積(交叉聯接),生成虛擬表VT1。表名履行次序是從後往前,因此數據較少的表儘可能放後。 html

  二、 ON:對VT1應用ON篩選器,只有那些使爲真才被插入到TV2。 htm

  三、 OUTER (JOIN):如果指定了OUTER JOIN(相對於CROSS JOIN或INNER JOIN),保存表中未找到匹配的行將做爲外部行添加到VT2,生成TV3。如果FROM子句包含兩個以上的表,則對上一個聯接生成的成果表和下一個表反覆履行步調1到步調3,直到處理懲罰完全部的表地位。 產品

  四、 WHERE:對TV3應用WHERE篩選器,只有使爲true的行才插入TV4。履行次序爲疇前去後或者說從左到右。 數據

  五、 GROUP BY:按GROUP BY子句中的列列表對TV4中的行進行分組,生成TV5。履行次序從左往右分組。 tab

  六、 CUTE|ROLLUP:把超組插入VT5,生成VT6。 vi

  七、 HAVING:對VT6應用HAVING篩選器,只有使爲true的組插入到VT7。Having語句很耗資料,儘可能罕用      八、 SELECT:處理懲罰SELECT列表,產生VT8。 co

  九、 DISTINCT:將反覆的行從VT8中刪除,產品VT9。 生成

  十、ORDER BY:將VT9中的行按ORDER BY子句中的列列表次序,生成一個遊標(VC10)。履行次序從左到右,是一個很耗資料的語句。 data

       十一、TOP:從VC10的開端處選擇指定命量或比例的行,生成表TV11,並返回給調用者。ps

 

原文連接:https://www.2cto.com/database/201301/182398.html

相關文章
相關標籤/搜索