是用于用户登入的sql,本来用 select * from user_manager where username='user' and password='user'也能实现,但是当用户表非常大,在找到符合条件的数据后就没有必要在继续搜索了,所以就是想让数据库在搜索到第一条符合条件的记录后就返回结果,并停止搜索。
本人新手,求解答,谢谢!

解决方案 »

  1.   

    用 first_rows 提示去执行且加条件:where rownum<=1;
      

  2.   

    select * from user_manager where username='user' and password='user'
       and rownum <=1;
      

  3.   

    当用户表非常大,在找到符合条件的数据后就没有必要在继续搜索了,所以就是想让数据库在搜索到第一条符合条件的记录后就返回结果,并停止搜索oracle本来就是这样的吧
      

  4.   

    select * from user_manager where username='user' and password='user'
    and rownum<=1;
      

  5.   

    其实习惯于用rownum<2代替rownum<=1
      

  6.   

     
    顶一下。    不过如果你的 username 字段是唯一索引或者主键的话,oracle找到之后就不会继续扫描了。
                否则如果这个字段里面有重复,oracle会按照自己的规则扫描到所有的记录。
                你只要在这个字段上建个索引即可达到你的要求。
      

  7.   

    用系统自带的rownum序列号就可以了 
    语句后面加判断rownum<=1
      

  8.   

    username,如果是账号,那么一般都设置'UNIQUE',这样自动创建了索引,应该就会返回一条,找到了也不会继续找。
    但是如果username不唯一,那么可以采用:where rownum<2
      

  9.   

    对于username创建了唯一索引之后,那么表的扫描方式估计是索引扫描,不会涉及继续找。
    如果没有,应该是全表扫描。
      

  10.   

    加条件: where rownum < 2;
      

  11.   


    赞成这个写法,因为<2 比<=1 更加规范点,虽然结果一样,但是其中的含义不同的