收藏
  注册
  登陆
新闻 论坛 软件下载 用户中心
Firebird中文社区 今天是: 2010年9月10日 星期五   您现在位于: 首页 →  论坛 → 问题讨论区(浏览贴子)
   问题讨论区  -  浏览贴子 (回复:7 浏览:400  ufo2003 coaco cutebit   [ 本版精华 ]  [ 版面管理 ]
 主题:如何判断某一记录是否存在?
   
sanron 
等级: 三流高手
贴子:93
积分:121
金币:0
注册:2010-1-4
          1
 如何判断某一记录是否存在?
如何快速判断某一记录是否存在?
我这样用,不知如何:
SELECT COUNT(FFF) FROM TTTT WHERE FFF=XXXX;
然后判断返回值大小。
 
 本贴发表时间:2010-2-2 17:38:55  
cutebit 
等级: 论坛版主
贴子:502
积分:516
金币:0
注册:2005-10-28
          2
 
如果大表又没索引这样性能有些差。
SELECT first 1 1 FROM ATTACHMENT where fff=xxx
这样好点
 
 本贴发表时间:2010-2-2 22:07:37  
sanron 
等级: 三流高手
贴子:93
积分:121
金币:0
注册:2010-1-4
          3
 回复:如何判断某一记录是否存在?
有道理
确实
这样更快些
 
 本贴发表时间:2010-2-3 10:08:08  
Jimt 
等级: 三流高手
头衔:霸王
贴子:355
积分:368
金币:0
注册:2007-9-12
          4
 
另一种方法好象是用 exists 来判断,不知道性能有什么不同,没测试过
 
彻头彻尾优化fb中……

力保前十??
 本贴发表时间:2010-2-3 20:34:42  
sanron 
等级: 三流高手
贴子:93
积分:121
金币:0
注册:2010-1-4
          5
 
今天查了查
才弄明白具体怎么用EXISTS()
SELECT 1 FROM RDB$DATABASE WHERE EXISTS(SELECT * FROM xxTablexx WHERE ffconditionff ) INTO :iSexists;
 
 本贴发表时间:2010-2-5 10:45:08  
Jimt 
等级: 三流高手
头衔:霸王
贴子:355
积分:368
金币:0
注册:2007-9-12
          6
 
EXISTS(SELECT * FROM xxTablexx WHERE ffconditionff ) 可以作为一个bool变量放到任何地方,跟rdb$什么的关系不大,只是fb的select语句必须有from子句,rdb$就被无辜的牵连了进去……
 
彻头彻尾优化fb中……

力保前十??
 本贴发表时间:2010-2-5 20:10:11  
sanron 
等级: 三流高手
贴子:93
积分:121
金币:0
注册:2010-1-4
          7
 
那就是说在存储过程中,可以这么用了:
:iSexists = EXISTS(SELECT * FROM xxTablexx WHERE ffconditionff ) ;
或者
IF(EXISTS(SELECT * FROM xxTablexx WHERE ffconditionff ) )
THEN
XXXXXX
是吧??
 
 本贴发表时间:2010-2-8 9:06:11  
Jimt 
等级: 三流高手
头衔:霸王
贴子:355
积分:368
金币:0
注册:2007-9-12
          8
 
是的吧,不过实践是检验真理的唯一标准……
 
彻头彻尾优化fb中……

力保前十??
 本贴发表时间:2010-2-8 17:32:52  
 分页: [1]
主题贴类型:[ 正常 ] 
您是否还没有 注册 或还没有 登陆 本站?!