很长一段时间以来,我一直在使用EXISTS
子句来确定给定条件下是否存在一个记录在一个给定的表中。
例如 - 如果我想查看"employee"表中是否存在一个姓为'smith'的员工,我使用以下查询
select 1
into v_exists_flag
from dual
where exists (select 1
from employee
where lastname = 'smith'
)
使用count(*)语句相比较而言,这样做肯定更为高效。
select count(*)
into v_count
from employee
where lastname = 'smith'
如果v_count > 0,则......
但是,最近有人提到使用ROWNUM = 1比使用下面所示的EXISTS子句具有更好的性能。
select 1
into v_count
from employee
where lastname = 'smith'
and rownum = 1
这正确吗?有人可以确认一下吗。
提前感谢。