SQL 执行计划
SELECT a.customer_id,c.party_code
FROM tp_no_apply_order a, TH_PARTY C
WHERE a.customer_id = c.party_code
执行计划
SELECT STATEMENT, GOAL = CHOOSE 145 19397 775880
NESTED LOOPS 145 19397 775880
INDEX FAST FULL SCAN JTCRM TP_CUSTOMER_CODE 6 19397 387940
INDEX UNIQUE SCAN JTCRM TH_PARTY_U01 1 1 20
--多加了一个字段,a.req_seri_no
SELECT a.customer_id,a.req_seri_no,c.party_code
FROM tp_no_apply_order a,TH_PARTY C
WHERE a.customer_id = c.party_code
执行计划
SELECT STATEMENT, GOAL = CHOOSE 214 19397 1028041
HASH JOIN 214 19397 1028041
TABLE ACCESS FULL JTCRM TP_NO_APPLY_ORDER 24 19397 640101
INDEX FAST FULL SCAN JTCRM TH_PARTY_U01 70 124443 2488860
两段执行计划不一样了,后者,TABLE ACCESS FULL 全表扫。
------解决方案--------------------同等回复。
------解决方案--------------------因为索引TP_CUSTOMER_CODE 中没有a.req_seri_no字段,用索引还得再用ROWID查询表数据才能获取到字段a.req_seri_no,效率比全表扫描还差。
如果两个表中有一个比较小,可以做为驱动表进行嵌套循环。
------解决方案--------------------