查询一视图:v_customer_product ,该视图的ddl语句是:
CREATE OR REPLACE VIEW V_CUSTOMER_PRODUCT AS
SELECT CP_PROD_ID,CP_CUS_ID,CUS_NAME,CP_PROD_CODE,
CP_PROD_BUY_DATE,CP_PROD_PRICE,CP_PROD_MACHINE_CODE,
CP_PROD_MACHINE_CODE2,CP_PROD_BUY_IVOICE,
CP_OWNER_ID,CP_OWNER_COM,CUS_REGION_CODE,CUS_HOME_PHONE,CUS_OFFICE_PHONE,CUS_MOBILE_PHONE,CUS_PERSON_PHONE
,EB_CUSTOMER.CUS_ID
FROM EB_CUSTOMER_PRODUCT INNER JOIN EB_CUSTOMER ON
EB_CUSTOMER_PRODUCT.CP_CUS_ID = EB_CUSTOMER.CUS_ID
分析前的执行计划:
SQL> explain plan for select * from v_customer_product;
------------------------------------------------------------------------------------
| Id| Operation
|Name
| Rows| Bytes | Cost|
------------------------------------------------------------------------------------
| 0 | SELECT STATEMENT
|
| | | |
| 1 |TABLE ACCESS BY INDEX ROWID| EB_CUSTOMER_PRODUCT| | | |
| 2 | NESTED LOOPS
|
| | | |
| 3 |TABLE ACCESS FULL| EB_CUSTOMER
| | | |
|*4 |INDEX RANGE SCAN | IDX_CP_CUS_ID| | | |
------------------------------------------------------------------------------------
Predicate Information (identified by operation id):
---------------------------------------------------
4 - access("EB_CUSTOMER_PRODUCT"."CP_CUS_ID"="EB_CUSTOMER"."CUS_ID"
Note: rule based optimization
17 rows selected
对表eb_customer, eb_customer_product及其索引进行分析:
sql> execute dbms_stats.gather_table_stats(ownname=>'CALL',tabname=>'eb_customer',cascade=>TRUE)
sql> execute dbms_stats.gather_table_stats(ownname=>'CALL',tabname=>'eb_customer_product',cascade=>TRUE)
分析后的执行计划:
-------------------------------------------------------------------------------------
| Id| Operation
|Name
| Rows| Bytes |TempSpc| Cost|
-------------------------------------------------------------------------------------
| 0 | SELECT STATEMENT |
| 930K|71M| |4807 |
|*1 |HASH JOIN |
| 930K|71M|29M|4807 |
| 2 | TABLE ACCESS FULL| EB_CUSTOMER
| 755K|20M| |1218 |
| 3 | TABLE ACCESS FULL| EB_CUSTOMER_PRODUCT| 930K|46M| |1022 |
-------------------------------------------------------------------------------------
Predicate Information (identified by operation id):
---------------------------------------------------
1 - access("EB_CUSTOMER_PRODUCT"."CP_CUS_ID"="EB_CUSTOMER"."CUS_ID"
Note: cpu costing is off
16 rows selected.
|