select * from a
where a.EVALUATE='true'
and a.name='1'
start with employee= '12345678'
connect by prior employee=manager
是先执行start with构造层次结构,再执行where条件筛选呢还是先执行where条件再构造层次。
第一次a表中数据为2万条,第二次将表中数据增大到20万条,但满足where条件的数据数仍然是2万条,速度慢了很多。可以看出是先执行start with,再执行where条件。
问:如何才能先执行where条件,在选定的记录上执行start with呢?
where a.EVALUATE='true'
and a.name='1'
start with employee= '12345678'
connect by prior employee=manager
是先执行start with构造层次结构,再执行where条件筛选呢还是先执行where条件再构造层次。
第一次a表中数据为2万条,第二次将表中数据增大到20万条,但满足where条件的数据数仍然是2万条,速度慢了很多。可以看出是先执行start with,再执行where条件。
问:如何才能先执行where条件,在选定的记录上执行start with呢?
解决方案 »
- 存储过程总是编译错,创建的过程带有编译错误。!!!
- ACCESS和ORACLE的差别有多大
- 某公司的一个面试题求解(不是很难)
- 在线等~~~有关DML空值查询的疑问
- 哪里可以较快速的下载JDeveloper 9.0.3、BI Bean 9.0.3?
- 请问在jdbc的程序中都要override finallize函数 用于关闭连接conn
- 请问:重复导出了一个表,再导入的时候会怎样?
- 我的这个动态sql错在哪儿了?请帮忙看看
- 如何批量修改一列的值?在原来的值前面都加上表名前缀?
- **請問這個小程序的結果是什麼??**
- 这条trigger的中间内容怎么写??
- 根据这个存储过程建立开多个账户的存储过程
这样就保证先执行最里面的SQL,WHERE就滤掉了
select * from( select * from a
where a.EVALUATE='true'
and a.name='1')
start with employee= '12345678'
connect by prior employee=manager
试了这样,好像速度并没有明显改善
如果没有区别,就说明是先执行where再执行start
A.
select * a
where a.EVALUATE='true'
and a.name='1'
start with employee= '12345678'
connect by prior employee=manager
耗时7S
20万条数据时,执行
B.
select * from( select * from a
where a.EVALUATE='true'
and a.name='1')
start with employee= '12345678'
connect by prior employee=manager
耗时14S,比上面慢了一倍。但如果仍用A执行20万条数据,耗时60S。
可以看出先执行了from里的字句,再执行start with.
但范围限制在2万条数据,速度为什么还是慢了一倍呢