首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > oracle >

SQL 执行计划,该怎么解决

2012-05-23 
SQL 执行计划SELECT a.customer_id,c.party_codeFROM tp_no_apply_order a, TH_PARTY CWHERE a.customer_i

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 = CHOOSE14519397775880
 NESTED LOOPS14519397775880
  INDEX FAST FULL SCANJTCRMTP_CUSTOMER_CODE619397387940
  INDEX UNIQUE SCANJTCRMTH_PARTY_U011120
--多加了一个字段,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 = CHOOSE214193971028041
 HASH JOIN214193971028041
  TABLE ACCESS FULLJTCRMTP_NO_APPLY_ORDER2419397640101
  INDEX FAST FULL SCANJTCRMTH_PARTY_U01701244432488860
两段执行计划不一样了,后者,TABLE ACCESS FULL 全表扫。


[解决办法]
同等回复。
[解决办法]
因为索引TP_CUSTOMER_CODE 中没有a.req_seri_no字段,用索引还得再用ROWID查询表数据才能获取到字段a.req_seri_no,效率比全表扫描还差。
如果两个表中有一个比较小,可以做为驱动表进行嵌套循环。
[解决办法]

探讨

因为索引TP_CUSTOMER_CODE 中没有a.req_seri_no字段,用索引还得再用ROWID查询表数据才能获取到字段a.req_seri_no,效率比全表扫描还差。
如果两个表中有一个比较小,可以做为驱动表进行嵌套循环。

热点排行