1 SQL_ID 41v45z3dtqa2s, child number 0
2 -------------------------------------
3 select * from CUSTOMERS C, ORDERS O WHERE O.CUSTOMER_ID = C.CUSTOMER_ID
4 -- join predicate AND C.customer_id = :v1 -- filter predicate and
5 O.order_status = 'PENDING' --filter predicate order by order_date --
6 sorting
7
8 Plan hash value: 3311696933
9
10 ----------------------------------------------------------------------------------------------
11 | Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time |
12 ----------------------------------------------------------------------------------------------
13 | 0 | SELECT STATEMENT | | | | 8 (100)| |
14 | 1 | SORT ORDER BY | | 8 | 1560 | 8 (13)| 00:00:01 |
15 | 2 | NESTED LOOPS | | 8 | 1560 | 7 (0)| 00:00:01 |
16 | 3 | TABLE ACCESS BY INDEX ROWID| CUSTOMERS | 1 | 150 | 2 (0)| 00:00:01 |
17 |* 4 | INDEX UNIQUE SCAN | CUSTOMERS_PK | 1 | | 1 (0)| 00:00:01 |
18 |* 5 | TABLE ACCESS BY INDEX ROWID| ORDERS | 8 | 360 | 5 (0)| 00:00:01 |
19 |* 6 | INDEX RANGE SCAN | CUSTOMER_IDX | 16 | | 2 (0)| 00:00:01 |
20 ----------------------------------------------------------------------------------------------
21
22 Peeked Binds (identified by position):
23 --------------------------------------
24
25 1 - :V1 (NUMBER): 1001
26
27 Predicate Information (identified by operation id):
28 ---------------------------------------------------
29
30 4 - access("C"."CUSTOMER_ID"=:V1)
31 5 - filter("O"."ORDER_STATUS"='PENDING')
32 6 - access("O"."CUSTOMER_ID"=:V1)
--
-- Detaillierteren Ausf�hrungsplan ermitteln:
--
SQL_ID d64pskw2p2qmd, child number 0
-------------------------------------
select /*+ GATHER_PLAN_STATISTICS */ * from CUSTOMERS C, ORDERS O WHERE
O.CUSTOMER_ID = C.CUSTOMER_ID -- join predicate AND C.customer_id = :v1
-- filter predicate and O.order_status = 'PENDING' --filter predicate
order by order_date -- sorting
Plan hash value: 3311696933
-----------------------------------------------------------------------------------------------------------------------------------
| Id | Operation | Name | Starts | E-Rows | A-Rows | A-Time | Buffers | OMem | 1Mem | Used-Mem |
-----------------------------------------------------------------------------------------------------------------------------------
| 0 | SELECT STATEMENT | | 1 | | 1 |00:00:00.65 | 22300 | | | |
| 1 | SORT ORDER BY | | 1 | 8 | 1 |00:00:00.65 | 22300 | 2048 | 2048 | 2048 (0)|
| 2 | NESTED LOOPS | | 1 | 8 | 1 |00:00:00.65 | 22300 | | | |
| 3 | TABLE ACCESS BY INDEX ROWID| CUSTOMERS | 1 | 1 | 1 |00:00:00.01 | 3 | | | |
|* 4 | INDEX UNIQUE SCAN | CUSTOMERS_PK | 1 | 1 | 1 |00:00:00.01 | 2 | | | |
|* 5 | TABLE ACCESS BY INDEX ROWID| ORDERS | 1 | 8 | 1 |00:00:00.65 | 22297 | | | |
|* 6 | INDEX RANGE SCAN | CUSTOMER_IDX | 1 | 16 | 700K|00:00:00.92 | 1467 | | | |
-----------------------------------------------------------------------------------------------------------------------------------
Predicate Information (identified by operation id):
---------------------------------------------------
4 - access("C"."CUSTOMER_ID"=:V1)
5 - filter("O"."ORDER_STATUS"='PENDING')
6 - access("O"."CUSTOMER_ID"=:V1)
--
-- Idee 1: Histogramme erzeugen
--
SQL_ID d64pskw2p2qmd, child number 0
-------------------------------------
select /*+ GATHER_PLAN_STATISTICS */ * from CUSTOMERS C, ORDERS O WHERE
O.CUSTOMER_ID = C.CUSTOMER_ID -- join predicate AND C.customer_id = :v1
-- filter predicate and O.order_status = 'PENDING' --filter predicate
order by order_date -- sorting
Plan hash value: 1247841217
--------------------------------------------------------------------------------------------------------------------------------------------
| Id | Operation | Name | Starts | E-Rows | A-Rows | A-Time | Buffers | Reads | OMem | 1Mem | Used-Mem |
--------------------------------------------------------------------------------------------------------------------------------------------
| 0 | SELECT STATEMENT | | 1 | | 1 |00:00:00.50 | 21269 | 21264 | | | |
| 1 | SORT ORDER BY | | 1 | 348K| 1 |00:00:00.50 | 21269 | 21264 | 2048 | 2048 | 2048 (0)|
| 2 | NESTED LOOPS | | 1 | 348K| 1 |00:00:00.50 | 21269 | 21264 | | | |
| 3 | TABLE ACCESS BY INDEX ROWID| CUSTOMERS | 1 | 1 | 1 |00:00:00.01 | 3 | 3 | | | |
|* 4 | INDEX UNIQUE SCAN | CUSTOMERS_PK | 1 | 1 | 1 |00:00:00.01 | 2 | 2 | | | |
|* 5 | TABLE ACCESS FULL | ORDERS | 1 | 348K| 1 |00:00:00.50 | 21266 | 21261 | | | |
--------------------------------------------------------------------------------------------------------------------------------------------
Peeked Binds (identified by position):
--------------------------------------
1 - (NUMBER): 1001
Predicate Information (identified by operation id):
---------------------------------------------------
4 - access("C"."CUSTOMER_ID"=:V1)
5 - filter(("O"."ORDER_STATUS"='PENDING' AND "O"."CUSTOMER_ID"=:V1))
--
-- Idee 3: Index auf order_status
--
SQL_ID 83ub7k219611h, child number 0
-------------------------------------
select /*+ GATHER_PLAN_STATISTICS */ * from CUSTOMERS C, ORDERS O where
O.CUSTOMER_ID = C.CUSTOMER_ID and C.customer_id = :v1 and
O.order_status = 'PENDING' order by order_date
Plan hash value: 716330983
--------------------------------------------------------------------------------------------------------------------------------------------------
| Id | Operation | Name | Starts | E-Rows | A-Rows | A-Time | Buffers | Reads | OMem | 1Mem | Used-Mem |
--------------------------------------------------------------------------------------------------------------------------------------------------
| 0 | SELECT STATEMENT | | 1 | | 1 |00:00:00.01 | 7 | 7 | | | |
| 1 | SORT ORDER BY | | 1 | 16 | 1 |00:00:00.01 | 7 | 7 | 2048 | 2048 | 2048 (0)|
| 2 | NESTED LOOPS | | 1 | 16 | 1 |00:00:00.01 | 7 | 7 | | | |
| 3 | TABLE ACCESS BY INDEX ROWID| CUSTOMERS | 1 | 1 | 1 |00:00:00.01 | 3 | 3 | | | |
|* 4 | INDEX UNIQUE SCAN | CUSTOMERS_PK | 1 | 1 | 1 |00:00:00.01 | 2 | 2 | | | |
| 5 | TABLE ACCESS BY INDEX ROWID| ORDERS | 1 | 16 | 1 |00:00:00.01 | 4 | 4 | | | |
|* 6 | INDEX RANGE SCAN | ORDERS_CUST_STATUS | 1 | 16 | 1 |00:00:00.01 | 3 | 3 | | | |
--------------------------------------------------------------------------------------------------------------------------------------------------
Peeked Binds (identified by position):
--------------------------------------
1 - (NUMBER): 1001
Predicate Information (identified by operation id):
---------------------------------------------------
4 - access("C"."CUSTOMER_ID"=:V1)
6 - access("O"."ORDER_STATUS"='PENDING' AND "O"."CUSTOMER_ID"=:V1)
Tuning of SQL Statements: Execution Plans
Subscribe to:
Comments (Atom)
No comments:
Post a Comment