比如select sysdate, a from b;
而现在表b中数据量很大,请问得到的sysdate是未取到数据之前的时间,还是取到数据之后的时间?

解决方案 »

  1.   

    我想查询出系统时间后数据库就把查询到的时间保存在临时表里存起来了,所以查询到的结果都一样吧。
    至于时间是前还是后,我想应该是看你把sysdate放到查询字段的哪个位置了,应该是按给定字段顺序来查询的吧。
      

  2.   


    不太可能,为了一个系统时间,每次读取数据都需要重新获取一个系统时间,太费资源了赞同hebo2005所说的,应该是查询之前的,做了一个小测试,简单证明了一下:1. 顺便找了个查询能够花费足够的能够看得见的时间。SQL> select sysdate, count(1) from all_objects;SYSDATE          COUNT(1)
    -------------- ----------
    06-12月-08          49535已用时间:  00: 00: 47.452. 然后写了个测试时间差距的简单东东testsysdate.sql,文本如下:spool c:\testsysdate.logalter session set nls_date_format='yyyy-mm-dd hh24:mi:ss';select sysdate from dual;select sysdate, count(1) from all_objects;select sysdate from dual;spool off;3. 看结果拉:
    SQL> @c:\testsysdate.sql会话已更改。
    SYSDATE
    -------------------
    2008-12-06 15:40:54
    SYSDATE               COUNT(1)
    ------------------- ----------
    2008-12-06 15:40:54      49408
    SYSDATE
    -------------------
    2008-12-06 15:41:234. 根据结果基本上断定使用查询前面的时间(说法不准确,偶也不知道咋说清楚,意思清楚就成哈)
      

  3.   

    我觉得应该是系统解析SYSDATE的那个时刻。所以没有前后之分。就是那个语句执行的时刻。
      

  4.   

    应该是语句执行的那个时刻吧,我试了下,取了300多万条记录,sysdate是同一个时间
      

  5.   

    是查询前的,查询开始前将会获取scn,而sysdate便是这个时间.