|
原帖由 〇〇 于 2010-12-12 20:30 发表 ![]()
5楼的解法,在9i时间是相反的
最后一个语句在你那里,能快那么多, 有点不可思议。
另外我这里怪异的是, 那个语句中的t1.n<t2.n如果放到紧接着where的后面, 执行计划没有任何改变, 但速度却可以快很多。
优化器竟然对这个明显的条件都没有进行顺序调整?
SQL> with t as (select rownum+100 n from dual connect by rownum<=900)
2 select max(t1.n*t2.n) from t t1, t t2
3 --select t1.n, t2.n,t1.n*t2.n from t t1, t t2
4 where
5 substr(t1.n*t2.n,1,1) = substr(t1.n*t2.n,-1,1)
6 and substr(t1.n*t2.n,2,1) = substr(t1.n*t2.n,-2,1)
7 and substr(t1.n*t2.n,3,1) = substr(t1.n*t2.n,-3,1)
8 and t1.n<t2.n
9 /
MAX(T1.N*T2.N)
--------------
906609
已用时间: 00: 00: 01.42
执行计划
----------------------------------------------------------
Plan hash value: 1546677613
--------------------------------------------------------------------------------
-------------------------------
| Id | Operation | Name | Rows |
Bytes | Cost (%CPU)| Time |
--------------------------------------------------------------------------------
-------------------------------
| 0 | SELECT STATEMENT | | 1 |
26 | 6 (0)| 00:00:01 |
| 1 | TEMP TABLE TRANSFORMATION | | |
| | |
| 2 | LOAD AS SELECT | SYS_TEMP_0FD9D66D8_B1C55C92 | |
| | |
| 3 | COUNT | | |
| | |
|* 4 | CONNECT BY WITHOUT FILTERING| | |
| | |
| 5 | FAST DUAL | | 1 |
| 2 (0)| 00:00:01 |
| 6 | SORT AGGREGATE | | 1 |
26 | | |
| 7 | NESTED LOOPS | | 1 |
26 | 4 (0)| 00:00:01 |
| 8 | VIEW | | 1 |
13 | 2 (0)| 00:00:01 |
| 9 | TABLE ACCESS FULL | SYS_TEMP_0FD9D66D8_B1C55C92 | 1 |
13 | 2 (0)| 00:00:01 |
|* 10 | VIEW | | 1 |
13 | 2 (0)| 00:00:01 |
| 11 | TABLE ACCESS FULL | SYS_TEMP_0FD9D66D8_B1C55C92 | 1 |
13 | 2 (0)| 00:00:01 |
--------------------------------------------------------------------------------
SQL> with t as (select rownum+100 n from dual connect by rownum<=900)
2 select max(t1.n*t2.n) from t t1, t t2
3 --select t1.n, t2.n,t1.n*t2.n from t t1, t t2
4 where t1.n<t2.n
5 and substr(t1.n*t2.n,1,1) = substr(t1.n*t2.n,-1,1)
6 and substr(t1.n*t2.n,2,1) = substr(t1.n*t2.n,-2,1)
7 and substr(t1.n*t2.n,3,1) = substr(t1.n*t2.n,-3,1)
8 /
MAX(T1.N*T2.N)
--------------
906609
已用时间: 00: 00: 00.81
执行计划
----------------------------------------------------------
Plan hash value: 1937261042
--------------------------------------------------------------------------------
-------------------------------
| Id | Operation | Name | Rows |
Bytes | Cost (%CPU)| Time |
--------------------------------------------------------------------------------
-------------------------------
| 0 | SELECT STATEMENT | | 1 |
26 | 6 (0)| 00:00:01 |
| 1 | TEMP TABLE TRANSFORMATION | | |
| | |
| 2 | LOAD AS SELECT | SYS_TEMP_0FD9D66D6_B1C55C92 | |
| | |
| 3 | COUNT | | |
| | |
|* 4 | CONNECT BY WITHOUT FILTERING| | |
| | |
| 5 | FAST DUAL | | 1 |
| 2 (0)| 00:00:01 |
| 6 | SORT AGGREGATE | | 1 |
26 | | |
| 7 | NESTED LOOPS | | 1 |
26 | 4 (0)| 00:00:01 |
| 8 | VIEW | | 1 |
13 | 2 (0)| 00:00:01 |
| 9 | TABLE ACCESS FULL | SYS_TEMP_0FD9D66D6_B1C55C92 | 1 |
13 | 2 (0)| 00:00:01 |
|* 10 | VIEW | | 1 |
13 | 2 (0)| 00:00:01 |
| 11 | TABLE ACCESS FULL | SYS_TEMP_0FD9D66D6_B1C55C92 | 1 |
13 | 2 (0)| 00:00:01 |
|
[ 本帖最后由 〇〇 于 2010-12-13 07:37 编辑 ] |
|