sql语句
select * from studenttemp stttt where exists (select 1 from student s where s.='90')
执行计划
0 SELECT STATEMENT Optimizer=CHOOSE
1 0 FILTER
2 1 TABLE ACCESS (FULL) OF 'STUDENTTEMP'
3 1 TABLE ACCESS (FULL) OF 'STUDENT'我想问一下,这个filter是怎样过滤STUDENTTEMP和STUDENT这两张表,是不是有点像nested loops样做循环嵌套,从STUDENTTEMP取出一条记录,然后去STUDENT中匹配,匹配成功就把记录留下来,不成功的就过滤掉,然后再从STUDENTTEMP取出下一条记录,直到结束
另外查看oracle的执行计划时,好像能用filter的地方也能用nested loops,请问下它们在效率上有什么区别,oracle主要是根据什么来选择是用filter还是nested loops小弟正在学oracle的调优,希望能得到大家的指点,先在此谢过了
select * from studenttemp stttt where exists (select 1 from student s where s.='90')
执行计划
0 SELECT STATEMENT Optimizer=CHOOSE
1 0 FILTER
2 1 TABLE ACCESS (FULL) OF 'STUDENTTEMP'
3 1 TABLE ACCESS (FULL) OF 'STUDENT'我想问一下,这个filter是怎样过滤STUDENTTEMP和STUDENT这两张表,是不是有点像nested loops样做循环嵌套,从STUDENTTEMP取出一条记录,然后去STUDENT中匹配,匹配成功就把记录留下来,不成功的就过滤掉,然后再从STUDENTTEMP取出下一条记录,直到结束
另外查看oracle的执行计划时,好像能用filter的地方也能用nested loops,请问下它们在效率上有什么区别,oracle主要是根据什么来选择是用filter还是nested loops小弟正在学oracle的调优,希望能得到大家的指点,先在此谢过了
解决方案 »
- Oracle Net Manager连接
- sql语句中有update字段(表示时间)
- 根据表中重复的某列值将另一列的多行数据合并显示的sql怎么写
- 关于Oracle的备份和恢复
- 按中文数字排序
- 求SQL!!!
- SQL高手请进,这个题目是一个外企的面试题目!
- 谁有p3006854_9204_LINUX.zip的pach
- Oracle9.2忽然坏了,没法连接了,具体如下:请大家参考
- 装上oracle后机器特别慢,是自动运行了db服务器吗,怎么让它不自动运行.
- 同一台机器上,数据库10.2 客户端9.2.关于配置的问题
- 在Oracle中,如何将一张表中的long字段的数据插入到另一张表中的clob的字段中
如果父表和子表有关联关系就会使用nested loop,
没有关联关系就使用filter了.
效率情况要根据表的实际情况分析。不能一概而论。filter的形式改成如下后效率更高:
select * from studenttemp stttt where exists (select null from student s where s.='90' where rownum=1)
如果用=之类的就会用nested loop这个我倒是没研究过
只看过HASH和nested loop的差别