ITPUB??ì3
12月微软Hyper-V虚拟化沙龙主题征集
ITPUB论坛 » Oracle开发 » 一个sql问题

标题: 一个sql问题
离线 olive
高级会员


精华贴数 1
个人空间 0
技术积分 4252 (339)
社区积分 8311 (192)
注册日期 2002-1-9
论坛徽章:14
会员2007贡献徽章会员2006贡献徽章生肖徽章2007版:猴2008北京奥运纪念徽章:蹦床2008年新春纪念徽章操作系统板块每日发贴之星
操作系统板块每日发贴之星     

发表于 2002-1-10 17:34 
之所以效率低就是因为先用count(*)来判断有没有相应纪录然后再select,现在不但要用count(*)而且还要加上一个rownum=1,效率更低,而且对问题的解决并没有帮助。现在并不是有几条记录的问题,而是有没有的问题。要么没有,有就只有一条。


__________________
下面这句话是真的
上面那句话是假的
只看该作者    顶部
离线 流云飞天
孤影萍踪



精华贴数 0
个人空间 0
技术积分 186 (10122)
社区积分 0 (51176)
注册日期 2002-1-10
论坛徽章:0
      
      

发表于 2002-1-11 08:20 
不,加上 rownum=1 会很快的。

这个我早已试过了。因为数据库在取到符合条件的条一个记录时就返回,所以,如果表中无记录的话,select count(*) from 表名 可能会慢一些,因为要取遍所有记录来判断,但若是有记录,则返回非常快,但count(*)的值永远为1!


__________________
忧郁的眼睛真诚的心,相识相知愿与君。redsun_shine@sina.com路漫漫,吾上下而求索之修者,远兮!小的时候,不知道理想是什么;长大以后,又不知什么是理想……
只看该作者    顶部
离线 wljcan
一般会员



精华贴数 0
个人空间 0
技术积分 242 (8058)
社区积分 2 (23375)
注册日期 2001-11-27
论坛徽章:0
      
      

发表于 2002-1-11 10:24 
感觉用rownum会快一些

我现在采用oldwain的方法,虽然coding复杂一些,但效率很高。


只看该作者    顶部
离线 olive
高级会员


精华贴数 1
个人空间 0
技术积分 4252 (339)
社区积分 8311 (192)
注册日期 2002-1-9
论坛徽章:14
会员2007贡献徽章会员2006贡献徽章生肖徽章2007版:猴2008北京奥运纪念徽章:蹦床2008年新春纪念徽章操作系统板块每日发贴之星
操作系统板块每日发贴之星     

发表于 2002-1-11 14:07 
是不是这样:如果没有记录,加不加rownum速度一样,如果有,就是加rownum速度快一些?
但是我想原文指的效率低不仅是速度的问题,可能也有coding繁琐的问题在内吧。


__________________
下面这句话是真的
上面那句话是假的
只看该作者    顶部
离线 wljcan
一般会员



精华贴数 0
个人空间 0
技术积分 242 (8058)
社区积分 2 (23375)
注册日期 2001-11-27
论坛徽章:0
      
      

发表于 2002-1-11 14:38 
olive,你所说的sqlerr怎么使用?

olive,你所说的sqlerr怎么使用?


只看该作者    顶部
离线 olive
高级会员


精华贴数 1
个人空间 0
技术积分 4252 (339)
社区积分 8311 (192)
注册日期 2002-1-9
论坛徽章:14
会员2007贡献徽章会员2006贡献徽章生肖徽章2007版:猴2008北京奥运纪念徽章:蹦床2008年新春纪念徽章操作系统板块每日发贴之星
操作系统板块每日发贴之星     

发表于 2002-1-11 15:42 
前面已经有人提到了,那是PRO*C里面常用的判断,例如:
EXEC SQL SELECT ......

if (sqlca.sqlcode==1403) { /* 此返回码代表前一个SELECT没有找到相应纪录 */
...
...
}


__________________
下面这句话是真的
上面那句话是假的
只看该作者    顶部
离线 jamesclass
初级会员



精华贴数 0
个人空间 0
技术积分 2 (161004)
社区积分 0 (51261)
注册日期 2002-1-11
论坛徽章:0
      
      

发表于 2002-1-11 17:08 
--Example of good select statment by using explicit cursor:
declare
  v_dummy   employees.id%type;
  cursor cu_emps is
    select   id
    from    employees
    where  id = 1234;
begin
  open cu_emps;
  fetch cu_emps into v_dummy;
  ..
  ..
  ..
end;

--Example of bad select statement by using implicit cursor:
declare
  v_emp_id   varchar2;
begin
  select   id
  into      v_emp_id
  from    employees
  where  id = 1234;
  ..
  ..
  ..
exception
  when no_data_found the
  ..
  ..
  ..
end;


__________________
Call me James!
只看该作者    顶部
相关内容


CopyRight 1999-2006 itpub.net All Right Reserved.
北京皓辰广域网络信息技术有限公司. 版权所有
E-mail:Webmaster@itpub.net
京ICP证:010037号 联系我们 法律顾问