ORACLE知道表是否包含行的最快方法

时间:2017-10-12 08:17:59

标签: sql oracle fetch rownum

select 1 from MY_TABLE where ID=42 fetch first 1 rows only;
select 1 from MY_TABLE where ID=42 and rownum=1;
select case when exists (select 1 from MY_TABLE where ID=42) then 1 else 0 end from dual;
select count(1) from MY_TABLE where ID=42;

以下是检查表中是否包含任何行的4种方法。最后一个很慢,但前3个大致相同的时间。什么是最佳实践(学术上正确)? 还有其他方法吗?

1 个答案:

答案 0 :(得分:0)

除非抛出异常是可以接受的,在这种情况下你需要捕获它,你会想要使用rownum = 1的计数

select count(*) from my_table where id = 42 and rownum = 1;

在这种情况下,返回值0表示没有行,1表示有1行或更多行。

虽然这给出了与case case语句相同的结果,但它更简单,更容易理解。