有一个问题请教大侠们:假如有一张表有一个时间的字段:time。并且这个表的数据一直不停的在增加。假如现在是5:30,我想抓取时间大于5:00的所有数据,但是执行这个抓取的SQL需要运行3钟才出结果。我的疑问是抓取的数据的时间范围是5:00--5:30的呢还是5:00--5:33的呢??谢谢!

解决方案 »

  1.   

    肯定5:00--5:30,你怎么知道sql执行的时间就一定是3分钟,根据环境的不同你的同一条sql也可以执行20分钟
      

  2.   


    肯定是  5:00--5:30 这是跟你的where 后面 的条件来的 
      

  3.   

    条件就是:where time>5:00;
      

  4.   

    你是不是想知道,你如果是设置的时间5:30,如果我的sql执行的3分钟,我数据库里查询的时候我的记录如果在这3分钟里做了修改,我是查询的5:30的记录,还是修改之后的记录?
      

  5.   

    如果你是5:30进行查询,查询的就是5:30的记录,5:30以后的记录就不会被查询出来。Oracle在sql语句做查询的时候系统会分配一个scn号,给这个查询,这个scn号是自动增长的。他做查询的时候查找的是符合你的条件的并且scn小于这个sql的scn,当你做查询的之后做的操作分配的sdn肯定会比你的查询的scn号大,所以查询的时候是不会查询出来的,所以最终查询的只是scn之前的记录
    也就是5:30作为分界。
      

  6.   

    执行了select语句操作 等于加了s锁
    应该是不能修改该表数据的 即使可以修改 也无法改变这个结果集 所以出来的结果是 5:00-5:30