oracle join及where的执行次序(二)
:将VT9中的行按ORDER BY子句中的列列表次序,生成一个游标(VC10)。履行次序从左到右,是一个很耗资料的语句。
11、TOP:从VC10的开端处选择指定命量或比例的行,生成表TV11,并返回给调用者。 www.2cto.com
http://msdn.microsoft.com/en-us/library/ms189499(v=SQL.100).aspx
Processing Order of the SELECT statement
The following steps show the processing order for a SELECT statement.
1.FROM
2.ON
3.JOIN
4.WHERE
5.GROUP BY
6.WITH CUBE or WITH ROLLUP
7.HAVING
8.SELECT
9.DISTINCT
10.ORDER BY
11.TOP
也就是说, 先进行on的过滤, 而后才进行join, 这样就避免了两个大表产生全部数据的笛卡尔积的庞大数据.
www.2cto.com
经测试,
1 oracle中,先on 后join可以确认。即
数据库处理是根据on的条件组合来产生最终join的结果的。
2 on在前,where在后可确认,若先where ,则应不会影响join的结果。而只有先on 并join后,产生结果然后再过滤,才会产生where的效果。亦测试过,但其它有无更复杂的情况就不得而知了。
所以需在使用中注意!注意!