数据库有个表有200W数据,查询数据如下select a.*,b.Name from A a left join B b on (a.Code=b.Code) 该语句通过plsql查询,因为plsql查询默认是查询出前几条的,但是发现,查询速度奇慢,于是改为如下:select a.*,b.Name from A a left join B b on (a.Code=b.Code) where rownum=1或者select * from ( select a.*,b.Name from A a left join B b on (a.Code=b.Code) ) a where rownum=1查询需要11.2秒,太慢了,但是如果这样查询select a.*,b.Name from A a left join B b on (a.Code=b.Code) where code=1 and rownum=1也就是加了一个条件,就非常快,但是为什么不加条件仅仅加rownum查前几条这么慢呢???另外还发现,如果把left join 换为inner join,以上问题都没有,非常快,但是这个地方不能换成inner join,哪位老大高手说说原因呀,为什么left join 会这么慢呢????为什么加rownum也不行呢????
解决方案 »
- Linux于Windows7 双系统问题
- uncategorized SQLException for SQL []; SQL state [null]; error code [17410]; 无法从套接字读取更多的数据
- 关于ORACLE9i的问题
- spfile和pfile
- 怎么提取多条中的一条记录
- 我从Oracle网站上下载的10g 10.1.0.2.0,它的许可是怎样规定的?
- 恢复一个误删表,急!!!
- 客户端访问服务器,有没有类似oem的可视化工具?
- 在ORACLE中如何处理ID的自动增加问题啊?
- 哪位在redhat7.2或7.3下成功安装过oracle8i?---铿锵玫瑰
- 关于一个sql的问题,请大家帮帮忙。特别邀请wildwave
- oracle 连接的问题
select a.*, b.Name from
a, b
where a.code=b.code or b.code is null
就会出现执行计划。
你可以google下,看不懂的话贴出来