I have 2 queries that I do an "union all" and then an order by after the "union all" This seems to be extremely slow. But when I run the queries individually, they are really fast. Could some help me out with this please.
SELECT *
FROM (SELECT a.*, ROWNUM rnum
FROM (SELECT COLS......
FROM (((SELECT from tables with joins)
UNION ALL
(SELECT from tables and view with joins))
order by colname)
) a
WHERE ROWNUM <= 500)
WHERE rnum >= 1
PLAN_TABLE_OUTPUT
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Plan hash value: 3988534528
--------------------------------------------------------------------------------------------------------------------------------------------------------
| Id | Operation | Name | Rows | Bytes |TempSpc| Cost (%CPU)| Time | Pstart| Pstop |
--------------------------------------------------------------------------------------------------------------------------------------------------------
| 0 | SELECT STATEMENT | | 500 | 1600K| | 3634M (1)|999:59:59 | | |
|* 1 | VIEW | | 500 | 1600K| | 3634M (1)|999:59:59 | | |
|* 2 | COUNT STOPKEY | | | | | | | | |
| 3 | VIEW | | 4277K| 13G| | 3634M (1)|999:59:59 | | |
|* 4 | SORT ORDER BY STOPKEY | | 4277K| 311M| 1095M| 3634M (1)|999:59:59 | | |
| 5 | UNION-ALL | | | | | | | | |
PLAN_TABLE_OUTPUT
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
|* 6 | FILTER | | | | | | | | |
|* 7 | HASH JOIN | | 212K| 15M| | 153K (1)| 00:03:37 | | |
|* 8 | HASH JOIN RIGHT OUTER | | 507 | 22308 | | 6 (17)| 00:00:01 | | |
| 9 | TABLE ACCESS FULL | DIR | 143 | 3861 | | 2 (0)| 00:00:01 | | |
| 10 | TABLE ACCESS FULL | USER | 507 | 8619 | | 3 (0)| 00:00:01 | | |
| 11 | PARTITION RANGE ITERATOR | | 212K| 6645K| | 153K (1)| 00:03:37 | KEY | KEY |
| 12 | TABLE ACCESS BY LOCAL INDEX ROWID | FL | 212K| 6645K| | 153K (1)| 00:03:37 | KEY | KEY |
|* 13 | INDEX RANGE SCAN | I_FL_ID | 382K| | | 38943 (2)| 00:00:56 | KEY | KEY |
|* 14 | COUNT STOPKEY | | | | | | | | |
|* 15 | FILTER | | | | | | | | |
| 16 | PARTITION RANGE ITERATOR | | 1 | 22 | | 856 (1)| 00:00:02 | KEY | KEY |
PLAN_TABLE_OUTPUT
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
|* 17 | TABLE ACCESS BY LOCAL INDEX ROWID| PAY | 1 | 22 | | 856 (1)| 00:00:02 | KEY | KEY |
|* 18 | INDEX RANGE SCAN | I_PAY_FLID | 1 | | | 855 (1)| 00:00:02 | KEY | KEY |
|* 19 | FILTER | | | | | | | | |
|* 20 | HASH JOIN RIGHT OUTER | | 25019 | 3029K| | 138K (1)| 00:03:17 | | |
| 21 | TABLE ACCESS FULL | DIR | 143 | 3861 | | 2 (0)| 00:00:01 | | |
|* 22 | HASH JOIN | | 25019 | 2369K| | 138K (1)| 00:03:17 | | |
| 23 | TABLE ACCESS FULL | USER | 507 | 8619 | | 3 (0)| 00:00:01 | | |
|* 24 | HASH JOIN | | 25019 | 1954K| | 138K (1)| 00:03:17 | | |
| 25 | INDEX FULL SCAN | PK_HO | 278 | 1112 | | 1 (0)| 00:00:01 | | |
|* 26 | HASH JOIN | | 25019 | 1856K| | 138K (1)| 00:03:17 | | |
| 27 | INDEX FULL SCAN | PK_HO | 278 | 1112 | | 1 (0)| 00:00:01 | | |
PLAN_TABLE_OUTPUT
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
| 28 | NESTED LOOPS | | 25019 | 1759K| | 138K (1)| 00:03:17 | | |
| 29 | PARTITION RANGE ITERATOR | | 25018 | 830K| | 63575 (1)| 00:01:30 | KEY | KEY |
|* 30 | TABLE ACCESS BY LOCAL INDEX ROWID | PAY | 25018 | 830K| | 63575 (1)| 00:01:30 | KEY | KEY |
|* 31 | INDEX RANGE SCAN | I_PAY_TIME_ID | 1493K| | | 9052 (2)| 00:00:13 | KEY | KEY |
|* 32 | TABLE ACCESS BY GLOBAL INDEX ROWID | FL | 1 | 38 | | 3 (0)| 00:00:01 | ROWID | ROWID |
|* 33 | INDEX UNIQUE SCAN | PK_FL | 1 | | | 2 (0)| 00:00:01 | | |
--------------------------------------------------------------------------------------------------------------------------------------------------------
SELECT *
FROM (SELECT a.*, ROWNUM rnum
FROM ( SELECT from tables with joins order by colname) a
WHERE ROWNUM <= 500)
WHERE rnum >= 1
PLAN_TABLE_OUTPUT
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Plan hash value: 3503998222
-----------------------------------------------------------------------------------------------------------------------------------------
| Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time | Pstart| Pstop |
-----------------------------------------------------------------------------------------------------------------------------------------
| 0 | SELECT STATEMENT | | 500 | 1228K| 222K (1)| 00:05:15 | | |
|* 1 | VIEW | | 500 | 1228K| 222K (1)| 00:05:15 | | |
|* 2 | COUNT STOPKEY | | | | | | | |
| 3 | VIEW | | 520 | 1271K| 222K (1)| 00:05:15 | | |
|* 4 | FILTER | | | | | | | |
| 5 | NESTED LOOPS OUTER | | 26 | 1976 | 54 (0)| 00:00:01 | | |
PLAN_TABLE_OUTPUT
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
| 6 | NESTED LOOPS | | 26 | 1274 | 48 (0)| 00:00:01 | | |
| 7 | PARTITION RANGE ITERATOR | | 212K| 6645K| 22 (0)| 00:00:01 | KEY | KEY |
| 8 | TABLE ACCESS BY LOCAL INDEX ROWID | FL | 212K| 6645K| 22 (0)| 00:00:01 | KEY | KEY |
|* 9 | INDEX RANGE SCAN | I_FL_START_ID | 47 | | 8 (0)| 00:00:01 | KEY | KEY |
|* 10 | COUNT STOPKEY | | | | | | | |
|* 11 | FILTER | | | | | | | |
| 12 | PARTITION RANGE ITERATOR | | 1 | 22 | 856 (1)| 00:00:02 | KEY | KEY |
|* 13 | TABLE ACCESS BY LOCAL INDEX ROWID| PAY | 1 | 22 | 856 (1)| 00:00:02 | KEY | KEY |
|* 14 | INDEX RANGE SCAN | I_PAY_ID | 1 | | 855 (1)| 00:00:02 | KEY | KEY |
| 15 | TABLE ACCESS BY INDEX ROWID | USER | 1 | 17 | 1 (0)| 00:00:01 | | |
|* 16 | INDEX UNIQUE SCAN | PK_USER | 1 | | 0 (0)| 00:00:01 | | |
PLAN_TABLE_OUTPUT
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
| 17 | TABLE ACCESS BY INDEX ROWID | DIR | 1 | 27 | 1 (0)| 00:00:01 | | |
|* 18 | INDEX UNIQUE SCAN | PK_DIR | 1 | | 0 (0)| 00:00:01 | | |
-----------------------------------------------------------------------------------------------------------------------------------------
SELECT *
FROM (SELECT a.*, ROWNUM rnum
FROM ( SELECT from tables and view with joins order by colname) a
WHERE ROWNUM <= 500)
WHERE rnum >= 1
PLAN_TABLE_OUTPUT
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Plan hash value: 1786470271
---------------------------------------------------------------------------------------------------------------------------------------------
| Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time | Pstart| Pstop |
---------------------------------------------------------------------------------------------------------------------------------------------
| 0 | SELECT STATEMENT | | 500 | 1600K| 1696 (1)| 00:00:03 | | |
|* 1 | VIEW | | 500 | 1600K| 1696 (1)| 00:00:03 | | |
|* 2 | COUNT STOPKEY | | | | | | | |
| 3 | VIEW | | 501 | 1596K| 1696 (1)| 00:00:03 | | |
|* 4 | FILTER | | | | | | | |
| 5 | NESTED LOOPS | | 501 | 60120 | 1696 (1)| 00:00:03 | | |
PLAN_TABLE_OUTPUT
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
| 6 | NESTED LOOPS | | 501 | 58116 | 1696 (1)| 00:00:03 | | |
| 7 | NESTED LOOPS OUTER | | 501 | 56112 | 1695 (1)| 00:00:03 | | |
| 8 | NESTED LOOPS | | 501 | 42585 | 1689 (1)| 00:00:03 | | |
| 9 | NESTED LOOPS | | 501 | 34068 | 1550 (1)| 00:00:03 | | |
| 10 | PARTITION RANGE ITERATOR | | 829K| 23M| 42 (0)| 00:00:01 | KEY | KEY |
| 11 | TABLE ACCESS BY LOCAL INDEX ROWID| PAY | 829K| 23M| 42 (0)| 00:00:01 | KEY | KEY |
|* 12 | INDEX RANGE SCAN | I_PAY_TIME_ID | 902 | | 9 (0)| 00:00:01 | KEY | KEY |
|* 13 | TABLE ACCESS BY GLOBAL INDEX ROWID| FL | 1 | 38 | 3 (0)| 00:00:01 | ROWID | ROWID |
|* 14 | INDEX UNIQUE SCAN | PK_FL | 1 | | 2 (0)| 00:00:01 | | |
| 15 | TABLE ACCESS BY INDEX ROWID | USER | 1 | 17 | 1 (0)| 00:00:01 | | |
|* 16 | INDEX UNIQUE SCAN | PK_USER | 1 | | 0 (0)| 00:00:01 | | |
PLAN_TABLE_OUTPUT
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
| 17 | TABLE ACCESS BY INDEX ROWID | DIR | 1 | 27 | 1 (0)| 00:00:01 | | |
|* 18 | INDEX UNIQUE SCAN | PK_DIR | 1 | | 0 (0)| 00:00:01 | | |
|* 19 | INDEX UNIQUE SCAN | PK_HO | 1 | 4 | 0 (0)| 00:00:01 | | |
|* 20 | INDEX UNIQUE SCAN | PK_HO | 1 | 4 | 0 (0)| 00:00:01 | | |
---------------------------------------------------------------------------------------------------------------------------------------------