在网上看到一篇文章,内容如下:
SQL Select语句完整的执行顺序:1、from子句组装来自不同数据源的数据;
2、where子句基于指定的条件对记录行进行筛选;
3、group by子句将数据划分为多个分组;
4、使用聚集函数进行计算;
5、使用having子句筛选分组;
6、计算所有的表达式;
7、使用order by对结果集进行排序;
8、对select列筛选。我对其中的第一步不了解。组装的含义是什么?把数据读到内存中吗?好象
不对,如果表的数据量非常大,显然是不行的。哪位大虾解释下

解决方案 »

  1.   

    你看的应该不只是限于oracle的,作者标题上写的也很清楚《SQL Select语句完整的执行顺序》
    这也就是说from组装来自不同数据源的数据,很明显,不同数据源,即组装来自不同的数据库的数据,使用什么数据库,就应该组装哪个数据库的数据。至于组装的含义,应该是sql底层的名词吧,这只是个人的一些理解,仅供参考
      

  2.   

    说说我自己的理解哦
    组装就是说把两张表的数据连起来
    比如下面的语句 
    select * from t1,t2;
    在select后面并没有指定某个特定的列 而是选中所有列 
    这个时候oracle就会把两张表做一个笛卡尔积(3*2=6) 每条记录对应每条记录拼接起来
    SQL> select * from t1;        ID NAME
    ---------- ----------
             1 wh
             2 wp
             3 wrSQL> select * from t2;        ID NAME
    ---------- ----------
             4 xx
             5 yy
    SQL> select *
      2  from t1,t2;        ID NAME               ID NAME
    ---------- ---------- ---------- ----------
             1 wh                  4 xx
             2 wp                  4 xx
             3 wr                  4 xx
             1 wh                  5 yy
             2 wp                  5 yy
             3 wr                  5 yy6 rows selected.
      

  3.   

    不很清楚
    应该是对数据存储表的解析
    因为马上要通过where条件进行筛选
      

  4.   

    说的很有道理:from子句组装来自不同数据源的数据。
    我的理解是from后面出现的是你要操作的数据的来源,
    这个来源可能是单个表,也可能是多各表,还可能是自己组装出来的一个表
    例:
      select * from tablename1
      select * from tablename2
      select * from (select rownum num, tablename1.* from tablename1) 
      where num between 5 and 10  其中最后一个sql语句from后面的数据源为自己组装出来的数据源---目的为选出oracle数据库表 
      tablename1中5到10行数据(分页显示)。
      

  5.   

    这是在网上搜到的一篇文章:http://gao-20022002.javaeye.com/blog/256939
    继续等待更多的解释.
      

  6.   

    又找到一篇:http://www.itpub.net/thread-988753-1-1.html
    记录一下
      

  7.   

    要查到话,只能到官方了查相应文档里,做什么要探索到如此之深?想模仿ORACLE软件?
      

  8.   

    说说我自己的理解哦 
    组装就是说把两张表的数据连起来 
    比如下面的语句 
    select * from t1,t2; 
    在select后面并没有指定某个特定的列 而是选中所有列 
      

  9.   


    关系理论里面有选择,投影和连接,这里的from组装事实上就是连接,把需要的源表按你的规则连接组装起来,然后where就是选择,选择出满足条件的数据,中间经过一系列排序分组等操作,最后select就是投影出来,最后形成我们想要的结果集了
    例子:select e.name || ‘工作于’|| d.depName from emp e join dep d on e.depId = d.depIp where e.id = 123;
      

  10.   

    从右向左的顺序执行的,既条件后先执行最后,再执行select的。
      

  11.   

    可能是先按一个where 去拼成集合  再有and 条件 筛选出的集合与之前的 做 整合吧最后返回 拼接的集合
      

  12.   

    http://www.butlife.com/index.php/archives/650
      

  13.   

    http://hi.baidu.com/thymesmile/blog/item/d1b8ad0bc5484c37b1351db1.html
      

  14.   

    按理说应该时先where过滤再组装才是
    比如select * from a,b where a.id=b.id and a.col1>'001' and b.col1<'008';
    应该是先通过条件a.col1>'001'取得a符合条件数据,过滤掉a表不符合条件的数据
            通过条件b.col1<'008'取得b符合条件数据,过滤掉b表不符合条件的数据
    然后再进行连接组装吧
    否则,将组装ab表的笛卡尔积