请教高手们一个关于rownum=1的问题,例子:
select * from t1
where exists(select 1 from t2
where t2.grbh=t1.grbh
and rownum=1);t2表中的grbh有建索引,但不是主键,这种情况下,使用rownum=1和不使用rownum=1,在执行效率上是否有区别?
select * from t1
where exists(select 1 from t2
where t2.grbh=t1.grbh
and rownum=1);t2表中的grbh有建索引,但不是主键,这种情况下,使用rownum=1和不使用rownum=1,在执行效率上是否有区别?
where t2.grbh=t1.grbh
这条语句中,即使grbh有索引,但是通过执行计划,可以查到,该索引根本上就不会用到。也就是,这条语句返回的记录可能会有很多条。使用rownum=1后,该语句返回的值只有一条记录,使用exists效率也就得到提高。
使用rownum=1执行的效率高,不使用rownum=1效率会比它低一些,具体可以看一下执行的计划了。