金融其它sql执行计划

外部表Merge执行计划优化

数据库版本: IFX 11.7FC78
表信息:
test           1000W   索引  testsy(a,b)
test_tmp   1000      外部表  

QUERY: (OPTIMIZATION TIMESTAMP: 01-29-2015 14:49:10)
MERGE INTO test t
USING test_tmp s
ON t.a=s.a and t.b=s.b
WHEN MATCHED THEN
UPDATE SET t.c = s.c

Estimated Cost: 53879734272
Estimated # of Rows Returned: 223471309160448
  1) t: SEQUENTIAL SCAN
  2) s: SEQUENTIAL SCAN

DYNAMIC HASH JOIN

一、使用的是全表扫描和HASH JOIN,效率较低;
二、如果将外部表改为实体表, 则小表使用顺序扫描,大表走索引, JOIN方式为 NL,效率高
三、如果在外部表的MERGE中使用directive指定索引,小表使用顺序扫描,大表走索引, JOIN方式还是HASH JOIN, 效率低
四、directive中指定AVOID_HASH, 被忽略。

请教两个问题:
1) 步骤三已经指定索引,为什么还是HASH JOIN ?
2)Merge语句中,有办法强制外部表的连接方式么 ?

求大神指教
参与1

1同行回答

光洋山光洋山数据库架构师金融科技公司
外部表没有索引,这种情况建议采用临时表来实现,可以创建索引。显示全部
外部表没有索引,这种情况建议采用临时表来实现,可以创建索引。收起
软件开发 · 2015-02-26
浏览617

提问者

xiaohuizai2013
数据库管理员cclb

问题状态

  • 发布时间:2015-02-03
  • 关注会员:0 人
  • 问题浏览:2480
  • 最近回答:2015-02-26
  • X社区推广