我正在使用Oracle,而且我有一个非常大的表.我需要检查是否存在满足一些简单标准的行.使用简单的sql,最好的方法是什么?
这是我最好的猜测,虽然可能会出现我的目的足够快,但我希望学习一个规范的方法,以便在Oracle中基本上做sql Server的“存在”:
select count(x_id) from x where x.col_a = value_a and x.col_b = value_b;
然后count()将返回为另一个层中的布尔值.主要的一点是,我希望Oracle为这个查询做最少的工作 – 我只需要知道是否有符合标准的行.
是的,这些列将绝对被索引.
如果您还使用rownum = 1,则使用COUNT(*)可以:
declare l_cnt integer; begin select count(*) into l_cnt from x where x.col_a = value_a and x.col_b = value_b and rownum = 1; end;
这将始终返回一行,因此不需要处理任何NO_DATA_FOUND异常. l_cnt的值将为0(无行)或1(至少存在1行).