|
〇〇 发表于 2013-9-9 12:04 ![]()
那就把中间结果连接来求
这种还是比较快的,虽然扫描了2次
select x.b,x.x-y.y from (
select b.b,
max(b.id)x, /*或,*/
min(b.id)y
from big b,
(select distinct e.a
from e
where e.a like '1%') m
where b.a>=3
and b.a<=4
and b.b= m.a
group by b.b)x,
(
select b.b,
max(b.id)x, /*或,*/
min(b.id)y
from big b,
(select distinct e.a
from e
where e.a like '1%') m
where b.a>=3
and b.a<=4
and b.b= m.a
group by b.b)y
where y.b=x.b;
执行计划
----------------------------------------------------------
Plan hash value: 3195090795
-------------------------------------------------------------------------------------
| Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time |
-------------------------------------------------------------------------------------
| 0 | SELECT STATEMENT | | 13 | 676 | 1288 (4)| 00:00:01 |
|* 1 | HASH JOIN | | 13 | 676 | 1288 (4)| 00:00:01 |
| 2 | VIEW | | 13 | 338 | 644 (4)| 00:00:01 |
| 3 | HASH GROUP BY | | 13 | 182 | 644 (4)| 00:00:01 |
|* 4 | HASH JOIN | | 128K| 1763K| 638 (3)| 00:00:01 |
| 5 | VIEW | VW_GBF_12 | 13 | 39 | 8 (13)| 00:00:01 |
| 6 | HASH GROUP BY | | 13 | 39 | 8 (13)| 00:00:01 |
|* 7 | TABLE ACCESS FULL| E | 500 | 1500 | 7 (0)| 00:00:01 |
|* 8 | TABLE ACCESS FULL | BIG | 280K| 3012K| 628 (3)| 00:00:01 |
| 9 | VIEW | | 13 | 338 | 644 (4)| 00:00:01 |
| 10 | HASH GROUP BY | | 13 | 182 | 644 (4)| 00:00:01 |
|* 11 | HASH JOIN | | 128K| 1763K| 638 (3)| 00:00:01 |
| 12 | VIEW | VW_GBF_6 | 13 | 39 | 8 (13)| 00:00:01 |
| 13 | HASH GROUP BY | | 13 | 39 | 8 (13)| 00:00:01 |
|* 14 | TABLE ACCESS FULL| E | 500 | 1500 | 7 (0)| 00:00:01 |
|* 15 | TABLE ACCESS FULL | BIG | 280K| 3012K| 628 (3)| 00:00:01 |
-------------------------------------------------------------------------------------
Predicate Information (identified by operation id):
---------------------------------------------------
1 - access("Y"."B"="X"."B")
4 - access("B"."B"="ITEM_1")
7 - filter(TO_CHAR("E"."A") LIKE '1%')
8 - filter("B"."A">=3 AND "B"."A"<=4)
11 - access("B"."B"="ITEM_1")
14 - filter(TO_CHAR("E"."A") LIKE '1%')
15 - filter("B"."A">=3 AND "B"."A"<=4)
统计信息
----------------------------------------------------------
1 recursive calls
0 db block gets
4460 consistent gets
0 physical reads
0 redo size
679 bytes sent via SQL*Net to client
520 bytes received via SQL*Net from client
2 SQL*Net roundtrips to/from client
0 sorts (memory)
0 sorts (disk)
4 rows processed
|
|